{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy as np #导入NumPy数学工具箱\nimport pandas as pd #导入Pandas数据处理工具箱\n#读入数据并显示前面几行的内容，确保已经成功的读入数据\n#示例代码是在Kaggle中数据集中读入文件，如果在本机中需要指定具体本地路径\n# 如，当数据集和代码文件位于相同本地目录，路径名应为'./advertising.csv'，或直接放'advertising.csv'亦可\ndf_ads = pd.read_csv('../input/advertising-simple-dataset/advertising.csv')\ndf_ads.head()","execution_count":1,"outputs":[{"output_type":"execute_result","execution_count":1,"data":{"text/plain":"   wechat  weibo  others  sales\n0   304.4   93.6   294.4    9.7\n1  1011.9   34.4   398.4   16.7\n2  1091.1   32.8   295.2   17.3\n3    85.5  173.6   403.2    7.0\n4  1047.0  302.4   553.6   22.1","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>wechat</th>\n      <th>weibo</th>\n      <th>others</th>\n      <th>sales</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>304.4</td>\n      <td>93.6</td>\n      <td>294.4</td>\n      <td>9.7</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1011.9</td>\n      <td>34.4</td>\n      <td>398.4</td>\n      <td>16.7</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1091.1</td>\n      <td>32.8</td>\n      <td>295.2</td>\n      <td>17.3</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>85.5</td>\n      <td>173.6</td>\n      <td>403.2</td>\n      <td>7.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1047.0</td>\n      <td>302.4</td>\n      <td>553.6</td>\n      <td>22.1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 导入数据可视化所需要的库\nimport matplotlib.pyplot as plt #Matplotlib – Python画图工具库\nimport seaborn as sns #Seaborn – 统计学数据可视化工具库\n#对所有的标签和特征两两显示其相关性的热力图(heatmap)\nsns.heatmap(df_ads.corr(), cmap=\"YlGnBu\", annot = True)\nplt.show() #plt代表英文plot,就是画图的意思","execution_count":2,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 2 Axes>","image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"#显示销量和各种广告投放量的散点图\nsns.pairplot(df_ads, \n             x_vars=['wechat', 'weibo', 'others'], \n             y_vars='sales', \n             height=4, aspect=1, kind='scatter')\nplt.show()","execution_count":3,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 864x288 with 3 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAA2MAAAEqCAYAAACY+YiEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOy9eXRd9ZXv+f2dO0hXkm0JWTKDxVB+xomaEnHkGA/1UqZcGLriwHNkTIdYTEksl4vlaroAV3dFXfRypSvGUF7FSxyJDBCbkGfHhgfPVWEoCr+8NoZgxYmLJyIoLyAy2JYsdG3p6kp3OL/+QzrXdzjn3DNPd3/WYiFL957zO7+z9/5Ne2CccxAEQRAEQRAEQRDOIrjdAIIgCIIgCIIgiEqEFmMEQRAEQRAEQRAuQIsxgiAIgiAIgiAIF6DFGEEQBEEQBEEQhAvQYowgCIIgCIIgCMIFaDFGEARBEARBEAThAmG3G6CFW265hb/00ktuN4MgCG/BzHyZ7ApBEAqQbSEIwmoU7YovTsbOnTvndhMIgggYZFcIgrADsi0EQejBF4sxgiAIgiAIgiCIoEGLMYIgCIIgCIIgCBegxRhBEARBEARBEIQL0GKMIAiCIAiCIAjCBWgxRhAEQRAEQRAE4QK0GCMIgiAIgiAIgnABX9QZIwjC24gix0gihVQmi2g4hMbaKATBVKkegiAIXZAdIiRIFgg/QYsxgiBMIYocA2fH8M09x3BqNIn5DTH84K4lWDRvFg1+BEE4AtkhQoJkgfAb5KZIEIQpRhKp3KAHAKdGk/jmnmMYSaRcbhlBEJUC2SFCgmSB8Bu0GCMIwhSpTDY36EmcGk0ilcm61CKCICoNskOEBMkC4TdoMUYQhCmi4RDmN8QKfje/IYZoOORSiwiCqDTIDhESJAuE36DFGEEQpmisjeIHdy3JDX6Sf35jbdTllhEEUSmQHSIkSBYIv0EJPAiCMIUgMCyaNwvPb1lJmasIgnAFskOEBMkC4TdoMUYQhGkEgaFpVpXbzSAIooIhO0RIkCwQfoIWYwRB2A7VfCGIyoP0niCch/TOf9BijCAIW6GaLwRReZDeE4TzkN75E0rgQRCErVDNF4KoPEjvCcJ5SO/8CS3GCIKwFar5QhCVB+k9QTgP6Z0/ocUYQRC2QjVfCKLyIL0nCOchvfMntBgjCMJWqOYLQVQepPcE4Tykd/6EEngQBGEL+RmdGuuiePH+lUimKLsTQQQRuQxuVOuJIMyjJzsi1VjzJ7QYI4gAYnVqW73XU8rotLCpDqPJNE6fT9IgQRABIV/fm+qqsHX1QlwztxY1VSHMra3K6bgocgyPTdk6SQxaWu+gPY+bGO1LN9+BkeyIVGPNf9BijCAChtWpbY1cTy6j065XB/CXf3otuvb2UcpdgggQkr431VXhwZsXYdvBEyU6DsD2lNtBS+sdtOdxE6N96fY7UMqO+PyWlbTgChAUM0YQAcPq1LZGrieX0amjvSW3ELOiXQRBeANJ3zevWpBbiAGFOu5Eyu2gpfUO2vO4idG+dPsdUHbEysC2xRhjrIUx9jpj7F3G2P9kjP3lzO8fYYx9zBj7zcx/f2ZXGwiiErHaeBu5nlxGp8baKA0qBBFAJH2vj0UUddyJSWXQJq5Bex43MdqXbr8Dyo5YGdh5MpYB8Fec888CWAbgLxhjrTN/28U5/9zMf/9sYxsIouKw2ngbuZ5cRqfmWVU0qBBEAJH0fSKVVdRxJyaVQZu4Bu153MRoX7r9Dig7YmVg22KMc36ac/7rmZ/HALwL4Aq77kcQxDRWG28j18vP6HRk2414fstKXD4nRoMKQQQQSd+vb5mD3o3tsjruxKQyaBPXoD2PmxjtS7ffgdxYSjGDwYNxzu2/CWNXA/glgOsA/B8A7gFwAcAxTJ+ejcp8ZxOATQBw5ZVXtn/00Ue2t5Mg3MaqrE1uZ1N0qF26v0h2hSDsRU3HnchKl8mIGBqfQjorIhIS0FxXhXBY976zq7Ylv58iYQFhgVFZEAvwYzZFIlAoCo3tizHGWB2A/w7g25zz5xhj8wCcA8ABbAdwGef8PrVrLFmyhB87dszWdhKE27idtcmHmOoUsisEESwstKGu2RYaBwgisCgqsK3ZFBljEQAHAfyUc/4cAHDOz3LOs5xzEcAPACy1sw0E4RfcztpEEAThZ4JgQ4PwDARB6MO2OmOMMQbgRwDe5Zz/Q97vL+Ocn5755zoA79jVBoLwE25nbbIKcukgiGDgN10Ogg0NwjNUKn7TF8I72Fn0eSWATgD/xhj7zczv/i8AX2WMfQ7TboofAuiysQ0E4RukrE35A7HfMmeRiw1BBAM/6nIQbGgQnqES8aO+EN7BzmyK/x/nnHHO2/LT2HPOOznnfzjz+1vzTskIoqJxO2uThChyDI9N4ePRCQyPTUEUtceVkosNQQQDs7psxo4YxSs21AxBeIZKQxQ5zlyYRGIqg+61rVjcUk9jH6ELO0/GCILQQX4KW7fcHMzu7pGLDUEEAzO67NYpgRdsqFmC8AyVhJys7+how2MvD+D4YJzGPkITtibwIAhCH4LA0DSrClc01KBpVpXjA7DZ3XC3C2QSBGENZnTZzRNyt22oFQThGSoFOVnfdvAENq9aQGMfoRlajBGEg7jhuqMHsydbRlxsvN4nBOFXzOiWGXc5r5yQk20JJl56r0qyLukPuZc6g5dkwgjkpkgQFlEuk5IfAnzNBo/rdbHxQ58QhB8xq1tm3OW8kIQikxExMDSGrr19ZFsChNfGDCVZv7w+hktnV5e0iTIuWo/XZMIIdDJGEBYgGYN1u49g5Y7XsW73EQycHSvYnfFDcgsrgsf1uNj4oU8Iwo9YoVtG3eXcTkIhihyfnE/mFmIA2Zag4LUxQ0nWlRZi5eYJhH68JhNGoJMxgrAAJWPw/JaVaJpVBcA7rjtqOB087oc+IQg/4qZuuZ2EYiSRwtDYFNmWAOK1MUOPrGuZJxD68ZpMGIFOxgjCArQYA78kt3AyeNwvfUIQfsNt3XIzCUUqk8VIIkW2JYC4LddyaJX1ICwavIgXZUIvtBgjCAvQYgzcdt3xItQnBGEPlaxb0XAIB/sGsaOjreD5ezvbK+L5g4yf5ToIiwYv4meZkGCce99XdcmSJfzYsWNuN4MgFNEaQGp38K4fg4NNtNnUg5FdIYKOE/bAizZHsse7Xh1AR3sLGmujaJ5VhcvnxBAOa9qDrmjb4sV3mo/X26dEEBJNeBWfyIRig2gxRhAW4bYxqEBDX9ETJoJwGy/bHJP2uGJti5ffaRBwe55AuIriiyY3RYKwCLcLdQYhoxBBEP7ByzbHbXvsV7z8ToMAySUhBy3GCCIgUHAwQRBOQjYneNA7JQjnocUYQQQECg4mCMJJyOYED3qnBOE8tBgjCBsRRY7hsSl8PDqB4bEp2eKOWj6jhSBkFCIIwj/I2ZzeznY0xCK6rmOVDSTMk/9OF7fU46l7voBnvn4DOLhn3wvJD+F3qOgzQdiElkBoK4Ol3S60ShBEZSEIDAub6vDsN27A0NgURhIp/OO/vIcHblqk2YZRwghvIY0jL96/Eqfjk+h6ps/T74XkhwgCdDJGECZQ25HTEghtdbA0BQcTBOEko8k07vzhW1jfcxRde/vwSv+QLhtm1AbSaYh9CAJDVkRuIQZ4N5GHGwlHSPYIq6GTMYIwSLkdOS2B0KlMFk11Vehe24r6WATxZBo9h09SsDRBEL5AT8IHubTeRhJG0GmI/ViRyMOJNO5OJxwh2SPsgE7GCMIg5XbktARCx6IhPHzLImw/1I87nnwT2w/14+FbFiEWtS9Ymnb1CKJysFvftSZ8kCax63Yfwcodr2Pd7iMYODuGWFR/wghKv24/ZhN5KL1vt+TPKvwiezTO+wtajBGEQcrtyGlJqJEROR46cKLAsD904AQyCobTrIF1aoAkCMJ91PTd6cRBSpPYjMh1Jx6i9Ov2YzYhlFOLFqcTV3lJ9pR0mMZ5/0FuigRhEGlHLt8w5+/IaUmokc6IsoY9nRFL7meFe4TSAPn8lpVomlWluw8IgvAuSvr+3JYVGBlPOZo4SGkSm86IuhMPlbO9hHnMJoRyatHidOIqr8ie2nyAxnn/QSdjBGEQLTty5RJq6HGx0LrTqLbj7aVdPYIg7EVJ3yfTIr655xia6qrQ29mOx2+/HmfOTyKetC9xkJqt05t4iMp4OEO596I21jjpPuhk4iqvyJ7afIDGef9BJ2MEYRAzO3JSYLMoiujtbEfX3sL0wXKGXYuBLXd65pVdPYIg7EdJ30MMaKqrwoM3L8K2gydytqJ3YzvqY9adKuQncIhFQ/jBXUtKbJORSSyV8XCfcmONtGgx8r6dSPxhFK/Intp8gMZ5/8E4974P6ZIlS/ixY8fcbgZBWELxILamtRnf+lIrQjOLJSXDPjw2hXW7j5QY2HzXg3KfCVgmKFMNJrtCBB0lfZ83uwq/HTyP7hfeUbUnVt97z31LUVcdRjojem6SXQTZljJoGY+MLKoCNkbZhlr/N9ZGqQ+9iWLn08kYQThMsXvBK/1D6D89pjoJEkUODo5nvn4DPjiXwBOvvY/h8amSncZyp2de2dUjCMJ+lPRdFDkWNtfh8duvz5XTOD4Yt9SVSc6N6q4f/wrPb1mJKxpqLLkH4R5aPDUk98Fy5C/aGGPY9eoAxTuVQe3kkcZ5/0GLMYJwGL3+3HI7hb0b23FZfXWJS5EW9wStA6TdeNkVhSC04nU5LtZ3UeR4f3i8wJ7s6GjDYy8PYHh8yjJXJopbCTZWucLJjW87OtowPJbC8cE4APNy43UdNUK5BZdXxnlCG5TAgyAcRm9gs9wOc9czfciKKBlQvBJcXA5KvUsEAT/KsZw92XbwBLauXmiprXC6/hPhLFaNNUryuHnVgtxnzMiNH3VUK04mLiHshRZjBCGDnQUT9Q5ienaY83fLjmy7Ec9vWelJP3G/FM4kCDX8KMdK9mRBc52ltsLsZJ2K1nobq8YaJXmU5MTshqIXdJRkmSgHuSkSRBF2BxDr9efW6w7iB/cEcmEigoAf5VjJnsQiIUs3bcxmm6UEBN7HirFGSR4vr4/hyLYbTbsVuq2jJMuEFuhkjCCKcGInTY97gV9cD/VALkxEEPCjHDtpT4y6UXnhNINwBiV5vHR2tSXud27rKMkyoQU6GSOIIuzaSTMaRKxnh9nJQGWt95L7nJkaNIR7GJUvq+TSa4H4cnLc29kOURQxPDblevvk8EOmNbdPM7yA27rm1H3slke3xxolWU6msxBF7im9I9yDFmMEUYSS20QkbPwg2ayrQjl3EFHkGE1O4XR8Cpuf6bPdHULr86h9bmFTHfZ3LUcmKyIcEtBcRwHIXkbLO5eboAGwxE3HS+4++c85b3YVntuyAumMiKzI8Xf/1I9X+ods1z8zE2G3XJm1trvSitaKIkc8mUIylUWWc1SHQxifyuCuH/+qYJE/tzYKQRBUN76c0BE99l/L+7ZTHt3efFCS5ZND40hMZchdkQBAbooEUYKc28T37lyMqbRoOADXTlcFaWA8MXghtxCz+h7FaH0epc/Fkym8PzyODb1H8cWdh7Gh9yjeHx6nwGYPU+6dK2UtO5eYskT2i+/fVFeFM+cncSrubFB88XPe+t0jGBlPIRYN4c4fvoVX+ocA2Kd/fs0Op6fdQXTNVkIUOT4cSWDgzBjuePJNfPHRw/jK99/A2QuTaKqbXqCcGk2ia28ffnPqvGK/iSLHmQuTSExl0L22FYtb6m2TQS3230ty6mbWQTlZ3tHRhidee5/cFYkctBgjiCIEgWHe7Crs2vA5vP5Xf4yf3LcUs6sj2H7ofxoeVMy63ahlY5IGxppoyDHXHq3Po+iikcqSH73PKPfOlSZok2lrXM7y77+hfT4e33A9ZlWH8e7pMfzN8yccm+gpPWcy5YxrnV9jUPS02y9ZYa1gJJHCRyMTeOjAiYK+eehAYXr3U6NJ1MciqgufDb1Hsb7nKLYf6seDNy/KLcislEFR5Ehlsnj89uvR29mOxS31ufZJ93FyYeh1JFnet2kZ9m1ahu61rXjs5QHLi6wT/obcFAlChnRGRCorojPPTSS/EOU39xzD81tWanatMON2U84lRJqkxpNpx1x7tD6P0ueynFd8TIjfKPfOlRZrYcYscfuV7t9UV4WvLbuqwIVrR0cbdr06gG+va7Pd/U7pObMcjuifX+Op9LbbD1lhrSCVySpupNXHIrl/z2+IIZ5M5/6W329Ktbq617Zi+6F+y2RQqUBzfsFwtc8cH4x7Xk7tQBAYouEQ/urnv60Y11tCH3QyRhAyZDmw7eCJksFN2qnUO/kx43ZTbkdZmqT2HD6JHR1tBffo7Wy3xbVH6/Mofa464r8sdJVOuXeulLUsHBKwc32hXO5c34awzlMO6f5bVy/EXzz76xLd7GhvcWSip/Sc1RHBEdc6t7PDGcWv7babaDiEiVRWtm8mUtnczzs62tBz+GTu3/n9plary0oZ1FIwXK2IcyW/70pyvSX0QydjBCEDVzi5kXYq17Q2gzGGj0cnNAUEmwkiLrejnJ8t6rGXB7D9tutwVWMNIiEBl82uVk2uoHT/cp/V+jxKnwNA2RR9Rrl3rpS1LJ0V8ehLA+he24r6WATxZBqPvjSA7965GKidvrYW2ZTuX1slf4rQWBt1ZKKn9Jxza6twSSyK/V3Lkc6KiOQlpbEyw53b2eGM4td2201jbRRXNdZg5/q2nKvi/IYYftC5BPPmVOHIthtziWGOD8Zl+02tVteleWNAMVrkMv8zSh4NC5rrML8+VuCpUfwZqxeGfsPoHMBrGWQJe7BtMcYYawGwB8ClAEQAT3LO/5ExdgmAfQCuBvAhgA2c81G72kEQRlAa3OLJNNa0NmPr6muxofeoroxVWtxu5AxvOfcwycg/t2UFJtMiQgyIRUOoj0ULFmJas2xp/axWNyKlz3k9vTZRito7V5psjCRSGB6fQtfevtxn8+VXj2wKAkMsEpbVh+ZZVY5M9NQ2GN4fHi95joVNdbK/1xoDJWcT/Kg7bme18yqCwHB1Yy3qayLYt2kZshyojgiYWzuTaKJ2Wga+va4Nf/tl+X5TWuiWW4hpyY6a/5mn7vlC2YLhRheGevDrAkWv662XMsgS9sI4tyfgmTF2GYDLOOe/ZozNAtAH4D8BuAfAp5zz7zDG/hpAA+d8m9q1lixZwo8dO2ZLOwlCDjkjKKUWznLkFmIS8xtiumLItN7TiskcAAyPTWHd7iOa2qzns1qeycZB09SFKtGuuDGJKTeh0CtvSrq5qHkWwibKT5hF6Tn2dy03bC9oMuYanrQtavqrV7e16F3xZxa31OPhWxYVnuCVWcBZLbOVpBNWjsWEJ1AUUNtOxjjnpwGcnvl5jDH2LoArANwGYNXMx34C4DAA1cUYQThN8S5uLBpCRuRIZ0QA02m18w2kFQH0SrFhz29ZmavJVez+pBUl1xGpOG3+AG4mQUD+hCASFjA+WVgrJ6iDptcRRY5ziSlMTGXxwbkEnnjtfQyPT9lWg0jrSU5+ZrZ4Mo2ewyfLZhlz64Sl3GRXSW8yWdGwPqnZBJqMVQ5a9FfvqYsWOy/3GQD4L5uWQSw+wcujsS6KZ795A0KMlXhpmMVJnXD7BM6vyXoI/TgSM8YYuxrAYgBvAZg3s1AD5/w0Y6zZiTYQhF6kwU1uJ27n+jY8+tJ0dijAmkB0tQVT8cmY3pMAOdeRNa3NOJdIoWtvYZHoxrqooaxwSv0kLVxpIukOatnNrH4farvWki6NJFI4fT6JWDSEsxemZNslZWZTwulMe1p245Xcs8IhQZc+5U8AAXs2fgj/YJf+Kslrfix0JHxRdhe31OPBm0tPxebWXry3kp7Ux6xzH3ZqgeKFEzgri5+7vbAk1LHdp4MxVgfgIID/nXN+Qcf3NjHGjjHGjg0PD9vXQCLwqNXo0oJc0dqHDkxnkAKsy4oUDYewprUZvZ3t2LdpGXo727GmtRlZjpL7d+3twyfnk5qfRS6T07e+1JpbiEnX/eaeYwgLzFDWJ7kdS7laOW5OJCvRrqhlN7P6fahl/iwuAvvbwfNlM7N5BS01spSypTXXVWnWp+I+uuPJN/HwLYuwoX1+zi48dc8XEIt6LyOdWTvrd6y0Lfl9eebCpC36KyevPRvb8ciL7+TqaY5PZnKf2bxqQUmG4WIdcKIGnhVZObXIqhfq+VmVgdFLBbgJeWw9GWOMRTC9EPsp5/y5mV+fZYxdNnMqdhmAIbnvcs6fBPAkMO1/bWc7ieBixe6WUtHaBU21OLLtRst2mRpiEWxdfS02P3PxpKpnYztEhQxWQ2NTiEXDmpNoFLt2qRVkNuIGpnS94lo5bqY2rkS7ovZerH4farvWxZMbpdpK+ZnZvIKW3Xg190mt+qS0obHnvqUl7r5Wun6ZxQunCG5jlW0p7ssDm5fbor/FcskYwyMvvoNX+ody97jrx7/Ci/evxPNbVmIilTHk1mj1ho/ZrJxaZdULLoJWuWSTu7P3se1kjDHGAPwIwLuc83/I+9OLAO6e+fluAC/Y1QaCsGJ3KzRTtDaf+Q0xhASGKxpq0DRLX/yWHKLIMTQ+hcl0Ft1rW7G4pR6nRpPY/EwfBIX757syaUFy7ZLarLbDWPxZLc+ndL38WjleO/GoBNTei9XvQ02miic3UpHy4s/mZ2bzClp345X0Rqs+KW6QzNiFfZuWoXttK3a9OuDoDn05vHCKEBSK+3IkkbJNf/PlknOeW4hJSJtzTbOqUBMNl9UBJ2rJ5S9Qjmy7Ec9vWalr0a9VVq1+FqMnx0bG4mK8sLAk1LHTTXElgE4Af8IY+83Mf38G4DsAbmKMvQ/gppl/E4QtWGGEYtGQbNFaq1yFpJ26Db1Hsb7nKLYf6seDNy/KLchCDOjtbC+4/46ONhzsGzQ1yFldhFLpete3zDE0aBLWIPdeeje24/qWOZa/DzWZKp7c9Bw+WaJXXl2sO1WwVW4CuKa1GZksx/ZD/bjjyTex/VA/7l5xDURRtPTeZqDJnnUU92XP4ZPY0dFmu/6WW3xo0QGn9MTMAkWrrFr5LG67CVLBde9jW2p7K6nEFNSENViRGlYUOT4cSeCjkQnUREOYSGVxVWMNrmyowWgybTogVqmN3Wtbsf1QP57fshINsQg+OT/tmjiSSOFg3yAeuGmR6cHY6qBeh4OEPZl+2os4+V6U7iXnHrTnvqWoqw4jnRE9H1TuRB/K9dFPv3EDvvbDt0rsw/6u5bi8PlbwXbcC9AOYgts12yLXl2tam/HIrdeBc+6o7MmlrddTJNqLOq1HVq16Frf1Q7YcyMZ2XFZf7Sl35wpAsaNpMUYEGqtiGYqNckMsYrr2l8THoxNYueP1kt8f2LwctVXh3DW9Psi5AC3GfAbJcHmK+2gqk8UfydiHI9tuxBUNNbnvuBmz5fb9bcA12+JmX1aCfrrRv0pjfL4O242T5U0IRZyvM0YQXsCqANjiVNrDY6UZFosDYrUObErpay+vj+HS2dUlcScE4VdIhsuTX1JjJJECA8qmt3Y7QN+t2m9BxM2+rAT9lPr3xftXIpnKIss5qiP2uutZmaLeKILAwMCw8UeFp+yUyMMb0GKMCDx2DDDl/M717L4pZYfKX4iVIwjuIwThdUSRI55MFUzi5IreWnEfyX401VVh5/q2kvpO+bErXojZqoSJvFOY7UunXGr9PJ4U1zi084TIbAZIq/CCnSDkocUYQRig3E6Xnp1qszuhWn39A+ZGRBCOIsWOnr0wWbIwslqP8u3HqdEkHn1pANtvuw4LmusQi5TaBy/svBPewAlb7/fxxOmTZK+cHJOd8C62F30miCBSLtOS3h0oM9mhtKTqpdTTBGGOkUQKH41M5BZigH16VGw/jg/Gce/TbyPEIGsfnMpiR3gfJ2y938cTN06IrEhRbxayE96FTsYIwgDldrqc3IHSMrCQewJBmCOVySoWqrZaj/TaD6/svBPu44St9/t4UqknRGQnvAudjBGEQdR2upR2oBpiEV2FH5UKReb/nikUhXa6GCfhDpIsnD2fxCfxpO6iooQ2ouHpshZa9chokVfA2A62F3beCecRRY6hsUn8/tMEPh6dgKBhPDCL38cTO0+IzOi9E5Cd8CaU2p4gLEIu/X1+HTK96fCV/PIXNtUVXGdNazO2rr4Wm5/pq7SYsYpPbS+9112vDuDuFddg20F7Y5kqGT0xY2q6q7U2od8TJPgcX9gWOTn73p2LERIE1fHAjvu6YW/M6Igd+uWVfiE8C9UZIwg70WKE9RZ+VPr8/q7l2NB7VLEoKGMMIQYIglAwwARwcueLCZOVFL/DkADc+t0juQLhASq660kKsykC1RFBNpuiUuHev/zTa9G1175JMmEZvrAtSmPErg2fwxUNMduLRLs5nnhx4eN2cWfC8ygKJrkpEoQFaAlo1utnr/T5dFYs+f0r/UPgnOPCZAYbeo/ihr//V6zbfQQDZ8dybhLknuBvpMnHut1HsHLH61i3+whOxyfRVFeF+ljE1zEcfkEQGC6pndahKy+pQfMs+fITcrrb0d6SW4gB/kt6QHgPpTFC5Bycc1ttvdvjiReTiPg9lo5wD1qMEYHEab9tLUZYzc9err1Kn4+EBNnfM8Y8NzgR1iE3+eh6pg9bVy9EPJn2dQyH3yhnX+R0t7E26tpEzetxLIQ+pPcJQFbvJ1LZwOu+2wsfPWN20N8FYR5ajBGBQ+4EIf+EqNx3jUxatCy0Upksnv3GDVjT2pz7u5TUQ669DbGIbJBxc12V7O9DDLQrF2CUJh/XzK3Frz8cwZ77luLA5uXo7WzHmtZmxYB0mpibQ4t9kUsQ0DyrypWJmhl7SHiP/Pf5aSKFx2+/vkDOdq5vQ8slMVfTlTthY9xc+CjplNyYvee+peDgZG8JVShmjAgcRv22zfiga022Mb8hht7OdsytjeZiukYSKcX2Sn8v9suX89dXu46X/NUtjDXwRVxHMUafX0muX7h/Bc6cnyqIRertbMei5lkIhwv327wYZ+E3tNoXuYQ+ehL4ON1eogDP2pb899nb2Y5ffziCO5ZehZDAIDCG0YkU5jfEcEmtO+/WKRvjpuxs9fEAACAASURBVC1T06n8MTsWDeHshSmyt4SE4kunOmNE4Mg/QVjcUo/NqxagPhZBKpOFKHJFI6jkg65l0qJUv0PWtWxvX8E11dwtJL98ufsV/17ajS82/Eo7pFoWBVYHaVfSYkCu7wAYfn6l95sVURKLlC9j+e1QcmX168TcjSQCWt2j5HTUjRo/brtzEdaS/z5f6z+Ljcuvwl0//lXOJvRsbMfsqoiha1uhT1rGUSvuo7Vmlh02QuuYPTw2FSh7S9gHLcaIwCG5L6z4g0Z8bdlV+Itnf61p4mt20iI3+dITS2amAKU04MyuDmN/13LZbIrFny+3KLBj4WRmwesnlPqusS4q+/wv3r8SWRGqEwalycfp80lFGStux4HNywMxMZeyGp6OT6LLxhTecpjRV6XNFTup1AK3QSX/fa5unYctP/11gT3Z/EyfIXtqxN7LLXTKjXlWjivl9EnrvfQu2LTqFG2EEFqhmDEicDTWRrHnvqXYvGpBbiEGlE9oYYcPupZYMlEU0dvZbrgAZbH/+obeo/h0Iq06oGjJRCV9pqmuCr2d7Xj89utx5vwk4knjCUEqZXBS6t/JdOnzN9VV4XR8UlNMj1wGMzUZK27HSCLluwDz4viTTEbEwNkx/HbwfG4hBmhPWGM2nsXOgrF24Lf2VhJqsqj0t/z3aWUWVb3ZCZXipiJh+QRTko1xMguilnsZianUqlOU0IPQCp2MEb5B6+6VIDDUVYfx+5EJXQOVFjc/vTtoSteUknbkF25+9hs3IDQzudbjSqE04OzvWo5LZ2tPvV3cN6lMFk11VXjw5kUFxYR7N7ajPmbM1aNSdumV+jfEWMnzb129UHZRoXV3W01ui0/Neg6fxI6OtpLi0F6dmMvtbPd2tuMf/+U9fP2P/kD3RNSKXXmlE0oAuUQ9btXxU7JPbrhHEuqoySIg7848b3YVkqksGuuiePH+lUimspbZU8lm5bv2x5NpiKIo+3mlcefF+1eqjqNmNuT0jr9a7mXEW0OrTukNHSAqF1qMEa6hx7DqnUSlM2LuFEDrQFXOwBqZyAkCw8KmOuzvWo5MVkQ4JKC5rgqjyXTBAPBK/xAA4JFbr0Mqk8VIIqV5wqQ04HwST+J8Mi3bPi2Lomg4hK2rF+Ym7tJ1uwy6wQCVMzgp9W91VEDPxnZsznOtu3puja5JUDFqclvcjuODcfzkjQ+wv2u5rQVhrUIp5rJ7bWsunb+eiahVbrLF7lFeiIUs1wY73SPdLgDsR9RkEYDs37bfdh3uffrtggRRVtnTaDiENa3NuHvFNSWbb0Cp27vSuJNMZQvsEWMMIYbcmGZ0Q86IjqndS5LZiVTG0OJQi07RRgihFXJTJFxBr2uAXteGaDiEg32D2NHRVuBK0NvZXnLS9Wli2hXk958mcC4xhcbaqGwhSyPuFaLI8f7wODb0HsUXdx7Ght6jeH94vGQgW9xSj7tXXIMNvUd1p59WcoWQ2ivXPi1uFo21UVwzt9ZSt8L8wenIthvx/JaVgUzeodS/DAxPvPYeute2Yt+mZehe24rzE2msaW3GgzcvwvZD/bjjyTex/VA/ziVSml3olAqwyrXjgZsW4dLZ1ZYXa7UjnbXShK+xNpo75dPqfieKHMm0sYlXOex2vdLSt24VwaXU+cZQXMyks4oLhJpoKPfzN/ccw+jMZpsV9rSxNopvfalVdvPtN6fOl7xXNRc8QWBorI3iwmQGG3qP4oa//9eyJVvKLSDl5HvXqwM4c2FSUS+U7HB+OZnfnRmzzZWQNikIrdDJGOEKeneo9bo2NNZG8cBNi7Dr1QF0r21FY20UzbOqcPmcWMFJ14cjCZy9MImHDpwou9tmxL1C6Tmf+/MVeOqeL6AmGkI8mUZtNFQyCGrdsZc7bdrR0YbHXh5QbJ+WU8CRRArRUKlbndmByo0kBk5T3L+RsICwwDA2mUFHewt6Dp/E8cE4AOBn37wBf/2/fjaXEQ2Qz7ppRTvsmhDYdTKktLPdPKsKw+NTeOzlAWy/7TpcM7cWNVUhzK2VX1xK7TtzfjJ3PekksrE2CsaYaqbVctgZC6m1b92Kx6yUpDxWoyTbJ4fGkcqKsn+LJ9O5f0vvVos91bIoEASGkMBkZWhhcx2617Zi16sD+Pa6NjTNqirr5aAmF0ZsktoGppJeaMlybJfrthdOywn/QIsxwhX0ThyMuDbMm12Fv/3y/4IsB6ojQslEbSSRwkcjE+h+4R1NEwkjbZB7zqa66YmkdN/5DTH85L6lhuJfpAF23uwq/LxrOT6OJzGSSOGxlwdwfDBe1i1TbhDPH0Sa6qqwc31byWI1aG6FdiD1r9yg/Pjt1+M7v/gdjg/GEQkJOJ9M2zaRdmLxa9eEXGnCd/mcmK7JXH4ymh0dbfjJGx+UuGOZmSiZiYUsN1HW2rduxWNWSlIeq5GT7Z3r2/DoSwMAULJAyP8boE++tC4KlGTo/aFxbD/Ujx0dbTn36XIbPUZKtqhR3LbNqxZo2sAsl+X4+GAcj708vWn72UtnIRYNl7UnWha3lbJJQad/1kBuioQr6M0ypCcjmDT43PrdabeZO3/wJkbGS111UpksaqIhzRMJI1nJ5J5z6+qFJXWhfj8yoas/il2Dbv3uEcSTaVxSG8X2Q/25hZiRhVP+IHJ8MI5HX5o+ffjlw/JuMHa4p/kVub44lyitNfNXP/8t/mrNtblTnvhE2tdZt+yakCu5tYbDgqxbZrn2SROvh27+jOxEzqhLn9GMhVpc/LT2rVtZEyljnDGKZXvfpmV49KXpTbT8BcIvH1qF57aswLzZ1RgenwKg793qcV+Vk6EdHW3oOXwSp0aT2HbwBLJ55l1yR4yGQ7lYZy1ujEYobltjbdSwzSlu2/HBOLYf6kcsGi5rT7S65VbCJgW5KFsHnYwRmrFyB0RvIgc97lZKvuWP3HodOOe5gGLGGDigeTdZrQ2ZjIih8SmksyIiIQFNtVHEJzNIZbJ49hs34O/+qR+v9A9hfkNMNg7ridfex/e/9nn8+U8v1kTr7WyHKIr4/acJVEcKXbAU3R+3rDDtklY8iBwfjOPep9/GkW03luzokSvGRaS+2PXqADraW9BYG0UylUF1VEBTXRW617bmknP0HD6JlktqsG/TMtRWhXBVY03ZE8hi/WuIRTCaTHtiR9LOUxk9u+hKhbYZYziweTlGEin0HD6JTxMp22Ih9bwPLbvnWvvWrWQBbiXlCcKOfHGBYGmxBVxcIEiycElMxP6u5bkxprlOW7ynlBVXsj/prIiQwDCRyuDTBJAROdIZMdeHkgwlUxm8e2Ys52UBTMsn54Xp95Xsv1a5KPce8/+en0WSyWSm1WpzjGROzre3Xj6pdpJKOf1zAlqMEZqwetJtZOIg7cJJBlIp46AW33LJVenhWz6DXRuuxwP7f6t5UVhsZDIZEb87O1aQIe/7G9vxn197L7cA6+1sx/bbroMgCODgJUZ6eHwKk2kxl95eEBim0iIGR6fdDg/2DeKBmxbl+ltp1y2dEXFFQ43m9yCHnkGEjPFFRhIp7Hp1QDYb2Xc6rsMn8emJVjQk4JFbWxESgJU7Xsf8hhj23LcU115ah32blsm61crpX8/GdjyRJ2NuLoK9kCVTro/23LcUUxmxJJ5SMDGRU8KI65WW3XM9fet0PKbeYvNW3jdom0Bq71lKBGXkeWPREB65tRWfJqbjzdJZjlnVYXzvX/8d6z5/hWy8dNOsKgyPAdsP9avqSDn7X26ML/cey6X/N2pz9GZOXtPajK2rr8XmZ/rw+O3X6zqpltyjt65eiGvm1oKDm4pP9RKVcPrnFCx/l8OrLFmyhB87dsztZlQ0w2NTWLf7SIlhdnLSrXUALm5rb2d7waCyuKUeW1cvRMslMQx+mkTb/NmYTIuKsWXl+CSexIbeo2iqq8qlJp9IZVEdEfDVH7wFoLCvZGsnbWzHZfXVqI9FEU9O79pvyTslkxaPUvC0ne9Dz0Tn49EJrNzxesk1jmy70fSiUAOmRjOr7crHoxN455MLJROY/IE8P/5jfkMM//HRwwDKvzul9929thVde/s0XcNujJxUWHm6IddHT93zhYKYUGC6n37etRzxvPISbk3mteqxF0+B3FwQOTAeuWJblN6zmecdSUzivTPjBYuunevbcHl9DF/74VuK19Tyfs3Yf1HkOHNhEp/MxDlLSY2kNjTWRlX/LrXRDr1Qm0MUzyeK+634GePJFE7HJ3O1JIOwcSDhhXmhz1B84XQyRmjCCzsgWk9hincY833LF7fUyxYx/uxlsw0bxnRWlC2O/P2vfR6LW+pxfDBe0FflduWSqWxuISY957aDJ9C9tjV3DTtPIvScWlaCK4ZWpH4q1pOO9pbcQgyYfp8PHTiBZ75+Q+4z5XRJSf/qYxHN17AbvacyVk/m5fpIKSZU5NwT9X+06rEXM5C6eSruhfHIDpTes5nnnUyJuYWY9L2HDpzAz765TPWaWsYBK2uGSRmAjw/GIYqi6t/z22iHrBX3d30skvu3nuyLgsCQFZFbiAHB8h7xgkdEUKDFGKEJL0y6tQ5IxYNIvm+5XAYmM0WMASASEmSLI//5T3+dO7ko7iu1QSTLuexzSoHScs9o9WRS6yBHxvgiUoxYsZ4oBZpn8oo6l9MlJf3LT3Xtt0Ww1ZN5uT6aSGUV7ZYXFjh+Lgrr5oLIC+ORk5h5XqXxJCuWusvrGacA4/ZfTvelDcfth/qR5aVFr/P/bvd7Lu7v/ALzUnKV7bddhwXNdYhF1HU2qBsHgL/tl9egbIqEJtzK1JWPnuxM+UVwL51dnWt7/g4XMH1S1r22FROpjOFMgM11Vbh6bo3iyYXevqqOyD9n80xtF7lntLJ4rx7kst0tbKrDSCJVcdkVBYHh8jnT8YH5enJJbVT2fZ6byfCpRT7k9K9nYzsO9g1qvoYVWJk50+pJitRHa1qb0dvZjgObl+M/NNdhz31LXbVb5fCCHhvBzSyKXhiPnMTM8yqNJ+fGp3Lu0nqvKaGU7VRPzbDFLfXo7WzH47dfj2vnTesrV9mQ/MFdSxASYOv4UtzfB/sG0bPxol0fHp/CpXOqMb8+VlZng55t1K/2y2tQzBihGcn/OZnKIst5SYY/rdcw6uNtxq1Jum86k8WGJ9/EqdGkrMuiUTepoQuT+Mr33yjZZdy3aZklz9nb2Y5FzdMpvb2Mw3EknooZk5BkLZnO4uTQOH7xb6dx2+IrCuWscwnmzalCMmU8vsrpbIpWv1s74g0yGREDQ2O50hFSG+fN1tfXxDRqMheLhnD2wpSiPNgd52bz9T1nW4w+r9J4Mrc2ikhYKMmmaLcNkZ7hjifflHXvl/T11u+W2ob9Xcsxmc7iO794N5extnlWFS6fE7N8bLTK3mq1m16MCyUsR/GF0mKM0IyRyVi+gSk3eGttg5nF3IcjCZy9MImHDlx0ebBiMmj1RNWvhtnhgF7PTZjyKS6eLWXTqqnSv4nhBax+t3Ys3CmgXBm9NkVLBs899y1FXXW4ZDIfgGyHnrYtevHCeFJsDx++ZREm06Jsgp3ntqzAyHiqRH7mza7CXx88UZqxtrMdn73UeNy33WhJ3+8VffGCrAQYWowR5tE70Sk2MEqZzZyaKEntl7IeLmyuw588/t9LPmc0EyAZMcezK3p+whQkmbDj3VrdPy5n9/QsRiZ7ZjJ4BmBR7Hnb4jeKZWJxSz123n49/vQf5Mfgy+bESmzD6fNJ2Yy1PpOtEryiL15aFAYUxU70ts8T4Sn0xngUB+kqZTZzKpBVav/xwTi69vbh/aFxS325yXc6+P7xegmSTNjxbq3uH5I/eZSSpYwkUorfMZPBM8hJCwhjFMvE8cE4Tg4rj8FytkEpY63fZcsr+mLEThDWQIsxQjN6JzrFBkbKSKT2fSMJArR+p7j9PYdPmg5gNtKOIFNpgfVKZDIiPokn8dFIAp/Ek8hkxPJf8jh+eLd2tdHvum1ksqdk77Vk8KRFsTM4KZdm7yUnEwf7BksSHqnpqxQjZpVseUWvvaIvXlkUViLkpkhoRu8RtpxbwsO3LCooPlkc8G0kJk3rd+Q+qxTzYHffBBkHXfM86UqUyYj43dmxgiLPPRvb8Zl53k/AUg4/uF1a3cYg6LYRNygtMWN6bK3P+syTtiUfJ/vYinspXWNhU52uxBhKSXr0PreXZNQrbfGKu2SAoZgxohAzmZm0fk/v4seIITASx2bHZJKMmCt4csL0STyJDb1HZTOBXV4fU/km4UWCoNtGJ3tmMsrlfzcSFhAWmJ8yWnrStuTjpFxadS+rxl8rrqP1mZzagPLCRpdXFoUBRrETqehzBWJG4bQWSpUMy+zqMPZ3LUeIAYIgWF4cUe937Cr0Ssf7hEQ6K8rKQibrf1fFSsTLuq11Ame0OKucvdRqP6Xv0gTPHrTKpRWTfKt0wKrx14rraHkmJ2WXitBXNrp9ZhhjAmNstobP/ZgxNsQYeyfvd48wxj5mjP1m5r8/03t/wjx2B2lKBmzd7iNYueN1bOg9ik8n0mWV2ojftFd8rb3SDsJ9IiFBVhbCIX+7KFYqXtXtYju7bvcRDJwdU4x7cSuZDCUFsActcqlXRszcy29oeaZKlN0gJZ3yE5pmB4yxZxljsxljtQD6AQwwxh4q87WnAdwi8/tdnPPPzfz3z/qaS1iB3Tu9RgyYKHKEBKB3Y2Ewb+/GdoQEKA4eXkkq4JV2EO7TXFeFniI57tnYjuY6f7i0EYUY0W0nEgP4ZaJoZrzxSoIFL6JFLkcSKex6dQDda1uxb9MydK9txa5XB3TLSBDHNy3PZOVciWSZUEOrm2Ir5/wCY+xrAP4ZwDYAfQB2Kn2Bc/5LxtjVpltIWI60I1TsK23VLpdeA1ZcDPKx26/HvNnV+PBcAt/6r+9geHxK0TXAK8fqXmkH4T7hsIDPzJuF/V3LkcmKCIcENNdV+T55R6WiV7edcm3ysvtkPkbHG3JvVEeLXIqiWFIgeUdHG0RRn8t0EMc3Lc9k1VyJZJkoh9bZQYQxFgHwnwC8wDlPAzC6rL+fMXZixo2xweA1CBPYvcul16Uhf4f3+GAc55NpdP7oLdz79Ns4Phgvu+Nr9ljdqh0rOt4nJMJhAZfXx3BlYy0ur485vhCjXVhr0aPbTp1Y+cV1zOh445eTPycp1msAqnKZ5cgtxIDpPtx28ASyBsxBEMe3cs9k1VyJZJkoh9aTsV4AHwL4LYBfMsauAnDBwP2+D2A7phdy2wE8DuA+uQ8yxjYB2AQAV155pYFbBR+jgbl273JJBqx4F0jJgBXv8NbHIo7t+NKOVWVRCXaFZNpdnDqx0mtn3cLoeGO2H53OTme3bTGi15xz2T70QxZtu9EiH1bNlfxyik24h6bFGOf8CQBP5P3qI8bYjXpvxjk/K/3MGPsBgEMqn30SwJPAdJpYvfcKOsWufVtXL8Q1c2tRUxXC3Nryu1Z2Zu7Ra8CKXQGk4tDFrgHAdDpaKwdVpR0rP6WtJrRTCXaFZFoZJybodruBS/jJdczIeJPfj4tb6rF51QI01kbB2HRNynIp+Z3ekLDbthjRazOy6HaqdTvvr0c+rJgrOWUTCP+iNYHHPMbYjxhjv5j5dyuAu/XejDF2Wd4/1wF4R+mzhDqSYW6qq8KDNy9C9wvvYNVjh/GV3W8YypZkNXpcGopdAQ72DZYkQNi5vg33P3vccDYoJWjHiggaJNPyWJVZrhxOJjsIouuYhNSPa1qb8eDNi7D9UD/W9xzFht6jZd9bEN3CjOi1UVl0Slfcur/T8hHEBCiEtWh1U3wawFMA/mbm3+8B2AfgR0pfYIz9DMAqAHMZY6cA/C2AVYyxz2HaTfFDAF1GGk1cNMzda1tLfML9tgsut8PbEIvg+S0rkUxncXJoHI++NIDjg3EAsPT5aMeKCBok0/I4dWLopxMrLyP14yO3XldQRF3LewvihoQRvTYqi26frtt9f6flg2wCUQ6tUeVzOef7AYgAwDnPAFCVWs75Vznnl3HOI5zz+ZzzH3HOOznnf8g5b+Oc38o5P22y/RWLZJidjK8qh5mkAcU7vOGwgKZZVQgx5BJ5SFj5fLRjRQQNkml57JyA6U2sQGhDEJhi3JPae/NLchM9GNXr4rEVQNlx2u3FrN33d0M+gnyKTZhH68lYgjHWiJkMioyxZQDO29YqoiySYT5zftITu+B2+ejbvctPO1ZE0CCZlscuW0IJU+zFyHvzS3ITPVih11pl1e3TdbvvH0T5IPwN05JVhzH2eQD/GcB1mI7zagKwnnN+wt7mTbNkyRJ+7NgxJ27lK0SRI55M4XR8El3P9OmaCKgFxxoJnB0em8K63UdKjKeaW4GW+9BEh1DBlAB4xa5kMiKGxqeQzoqIUE0y27DLlqjZvsbaqKtJEIKA0fdmMgGEL2yLKHKcS0xhKp2FwBgEAQgJgmISL63jtNvjrhP3dztBCVGRKAqY1myKv2aM/TGARTMXG5ipNUa4iCAwXFJbhfpYVNdumZqhA2DICJop9Kx2H9rlJ4JMJiPid2fHsDlvM6VnYzs+M28WLcgsxi5bomb7aCPJPEbfm50Zg72A3Bi6o6MNP3njAzxw0yJZOdM6Trs97jpx/6DLB+EvVEd7xthXpP8A3Irpxdi1AL488zvCA+j1RVbLJGQ0y5CZQs/l7kO+1kRQGRqfyi3EgGk92PxMH4bGp1xuWTCxw5Yo2T7GWOAy+rkFjQGlyI2h2w6eQEd7i6Kc6Rmn3e5zt+9PEE5Sbuv1yyr/rbW3aYRdKO2OJVMZpDJZNNVVlfytXOCs3uBitwOECcILpLOirB5ksqLq98wkyyGsRcn2hRjIxhG2IIocyXRGVr6kpF5yckbJfQjCm6i6KXLO73WqIYQyVvs2KwXHvntmDNsP9WPn+raCVPJaAmfNFnrWeh+CCBKRkCCrB+GQ8j6Z2/EcRCFKtm8kkSIbpwLF7BhD0n+l5F3xZFr1tMuPbv8kK0TQ0RyUwBj7EmPsYcbY/y39Z2fDiGnsKH4otzu2o6MNPYdP4tRoEg8dOIGtqxfm/qZ158xMoefcbrIA2u0nKobmuqqSAuc9G9vRXKccy+CVgrZ0OncROdtHpxDKuF1U2M9I+v/Ea+9jR0dbyTh+sG8QvZ3tCAmQ7U+/uf+RrBCVgNZsij0AagDcCOCHANYD+BXn/Ov2Nm8ar2Q9cwMjWQoltGRMTKYyePfMGHoOnyyo5fXLh29EiMHWXaj89kXCAsYnM7jrx7+i3X5CK77IeFYOKZtiJisirCGb4sejE1i54/WS3x/ZdiOuaKixs6k56HROG27s6PvhFMHMuOYQnrUt+fq/uKUem1ctQH0sgisaYhAY8PtPk9jxi99heHwqEDrphqz4QYcIX2IumyKAFZzzNsbYCc75/8MYexzAc9a0jVDDaGxVucmStDs2PAZsP9RfYuhikZBuQ6fXgEm7xyOJFJLpDD4amUBTXRVOjSZzu/0eGpwJogQrBu1wWMDl9bHyH5zBCy6+SqdzVumrVLYjmcoiyzmqIyHFdN1exumMbX5ZJFPMsHHy9f/4YBxde/swvyGG/V3LsaH3aK5fF7fU48z5SdRWhRCLhFVtk9OLDz33c1pW/KJDRLDQ6qY4OfP/CcbY5QAyAK6xp0lEPkYrxWt1ZWqIRWTdpBpiEV3tNOJKkP+dLz56GN0vvIMHb16ExS31uTbT4Ex4FbfcZ7zg/mbnBEkUOT4cSWDgzBjuePJNfPHRw/jK7jfINUkDXnFhLYfRcY3QljBmcUs9Hrx5EbpfeAdffPSwqm1y2o7pvZ/TsuIXHSKChdbF2H9jjNUD2Ang1wA+APAz21pF5DA68dI6WRpNpvHEa++he20r9m1ahu61rXjitfcwmtRXRs6IAVNKzbt51YLcs9LgTHgVtwbt/CD8I9tuxPNbVjq+a2vnBGkkkcJHIxN46MAJmhDpxC8nTl7YUPAryvov5Ppz86oF2HZQm/44bcf03s9pWfGLDhHBQqub4u8AZDnnBxljrQA+D+C/2tcsQsJo9iMlVyZg2gdbukYqk8Ur/UN4pX+o4Pt/+2V9hkePAZNcFCZSyql5aXAmvI6bg7bbBUulCVKxK49Rfc13W8pyjppoyJW+9XusiBdcWLXg16x+XkFO//N1Ukpvn4+S/jhtx7TeL18X582uwnNbViCdEW2XFb/okFb8btMqBa0nY92c8zHG2B8BuAnA0wC+b1uriAKMZD+S203aub4N9z97vMAtwKodbq3XyXdR+N2ZMdnvSMG55KNNeJlKdrWy8nSu2G3p5FACE6ms430bhKxtfjpx8ltWP6+Tr5PSOJqPkv44bce03K9YF2/97hGMjKdw2ZyY7bLiJx0qRxBsWqWgNZvicc75YsbY3wP4N875s9Lv7G+id7Ke+Y1cxsR0FieHxvHEa+8X1A57fstKNNZGLQlW1Rr0mp8ZSfJrl9wpKFCW0ImrGc8o0NsairOlLW6pxyO3tmIilc25KjrRtz7I8KcJ2gm3BM9mU9SCHtvktB3Tcj+3dTEoOuR2PxIlmM6m+DFjrBfAnwLYwRirgo4aZYRxtKSnVzIY0s7jx6MTuPfptwuuK7kFWOUuovU6+S4KxwfjeOzlAXSvbcVnL52FWFQ94xNBeAm7XK2CMhHQSrHb0vHBOB55sR89Gz+PfZuWIcuB6ohgezZFv8aKyMkLTbQqGz22yQo7psdmabmf27qo5gbuJ/vsdj8S2tG6GNsA4BYAj3HO44yxywA8ZF+zCODiDtKuVwfQ0d6CxtookqkMLp8TgyAwzbtZ5XygrYo/0XKd4rYcH4xj+6F+2qkhfInVsVuVeNomZ5+Gx6cgCAKumOOcTfBjrIgWefHT5JGwDj22yYwdM2Kzyt3Pq7roN/vs1X70O3bYVE2nW5zzCc75c5zz92f+fZpz/oqpOxNlGUmksOvVAdy94hpsP9SP9T1HcecP38LA0Bjibg9uHwAAIABJREFUSe0ZidR8oEWRY3hsCh+PTmB4bKpsKnqtn1UiSP7YBGE1fkmrnG8LPokncfZ80vc2wSvt0EM5eaGYEcJuzNosuXmFHl20Yl6iFb/YZwk/2jSvY5dN1XoyRrhAKpNFR3tLSYrarr192LdpmebjZyW3AACO+5WruSjQDi5R6fjBrUTOFuzoaMNP3vgAD9y0yFKb4CReaYceysmL3cW5CUJJBpOpDIbHULbYtNK8QosuOn1S5Qf7nI8fbZrXscumUtyXh5EUR075s/xiqnoJteNnucxVenZ5rNwRkmsL7eAShD8yNJ5LTMnWB+xob7HUJriBV9qhlXLy4rfJI+E/lGTw3TNjZcdxtXmFFl10+qTKD/a5GL/ZNK9jl02t+MWYk0fcemmsjaJ5VpWs8ldHhJLj597OdjTEIorXK31W0TO1SPx2/E9UHk7YCj+4lUym5W2BVNso6BN9L40Z5eTFj5NHwFt9HGTM9rMocoQEoHdje4EM7uhoQ8/hk2XHcbPzCqc3G7xmn0lPnMcum1rRbopeD8YUBIbL50wvsrr29hW0cW5tFRqqI/gvm5YhlRGRFTmOvD+EWVVhhAQmm3mx+Fl7O9vx867lEDlHPJlGz+GTGB6fUq1FUhwIyhhDJiNiNJk2dQxOO7iEVxFFjngyhdPxSXQ9U6iHC5vqTMt+Pk64lZh1Bw4xlrMFi1vqsXnVAjTWRjEnFsGa1uayg5Kf3ZG9NmaUkxeri3M7gdf62AtINiiZmi6KXh0OIRxiSKam33lDLKLbDpnt5/zvN9VVYftt1+HqubX4eHQCj708kCujozaOm00wEYuG8NQ9X0BNNFR2DmMFXnL7Iz1xB7tsqqY6Y25jV80Or9RgKDc5kfs7ALx75kLBIq1nYzv+229Oofd/fFiimErPuv2263Dv02/nikLPm12NqxtrNflm7+howy8HzuLLn5uPzUWTVL0GwSvvgvAVttcCkuT+zPlJdL/wTol8PvuNG3DnD9/yzWBoxQD+aWIKA2fG8NSRD3D3imsK6gT2bGzHZ+bNQjgs73Th1wnExZqNGZwcSsjWbLTaTlm1aPXb4tcjY4Fn6oyJIseHIwmcvTBZUHdv14br8f/+8+/QNCuKrauv1T0Gm+lnUeQ4c2ESw2NTqImGMJnO4pPzkzjYN4ivLr2qoJSO2jXN2AO576rNYYKGR/SkIjFhUxU/VNFuil44jdESK6UU7yUtxKR2b36mD3csvQqLW+pL3AOUnrUmGsr9/NCBE6irDqvWItnftRwHNi9H99pWPPbyAD5/dWNuEJCuY8S90GvH/wQBXHSfrYmGZPVnaGzKV661VrgD18eimDe7Gg/f8tmS5EKbn+nDaDJt6/2dJt9Gf/HRw+h+4R08ePMiLG6pB2DPmGFlDK3fYka8MC57iZFECh+NTOQWYsB0fzyw/7fYvGoBOtpbDI3BRvtZks0NvUdx2/eO4N6n38aFyQwO9g3i7hXX4Np5dZrH8fyTpiPbbsTzW1Zq3piRsyVqc5igQXriHnbY1Ip2U3SqBoPaKtpoZhYlRfw0kcLmVQtyCzVJMZWeNZ43cTo1mkQ6IyreUxAYOOdY33M09zspTqS4HVoyKRVf2yvH/wQhIelZPJmW1Z/iCY9bg6HWnTorBnBBYLi6sRan4hO6r+XHCYScjd528AS617aia2+fLWNGJWdBVBqrYtEQhsemKm58SGWyiptB9bEIaqIhdK9tRX0sknPVOz4YL6tTRuc/avqw7eAJ7O9armscN1rjTMmWqM1htOCXk2SqIRYsKvpkzInTmHI7nEYnJ0pBhCOJFOpnknjkK6bcs+5cPx1km/99OUXODxJljGFNa3Pub9IktbgdWjIpFeO3HVwi+Eh61nP4JHZ0tJUkzDnYN1jweTcGQz2nKFYEH0uTFSl2TM+1/JhQQslG18citp3g+3HRahVyY9We+5bi7IWpisy2Gw2HMJHKyupNOitC5MD2Q/2448k3sf1QPx68eRHWtDaDMaaa2MHo/EdNH06NJsE5d2Qct8OW+CmrM3kTBYuKjhkD7N8FKefXq9XvN5MRMTQ+hXRWRCQkoKk2iveGxwtixqRaPx3tLdh+qL/E9zr/WSNhAeOTGdz141+p+mrL+WX3bGzHE6+9h1f6h7CmtbnEX31HR1sugJd8mAkbcSxmTApS37p6Ia6ZW4uaqhAuiUXx/vC46/FPSjZkf9dycM5LavlZGbT/8C2LCuJYyl3LbIxIQRKDSAhza+3ftFHq332bltm2c17p8SDF4zIHx1d2v+FkfzgWM6YlZlwpZiwj8gL3RWC6X376jRvw7X/qxyv9Q6o6phSPrtYeJdnsXtuK7Yf6Db8TvXMxO+JP/aZ3fjnFI3IovpyKX4zZzcejE1i54/WS3x/ZdiOuaKjRZFAyGRG/OztWsODp2diO5tlRjE9m8WkihZFECgf7BvGXf3ot5tZGIQiCJmNWTpG1TPSkTE7JVAbvnhnLuUkUPytBWIwjEyY1PfHCYKhkYw5sXo71PUdLbIqZNhfbg8Ut9di6eiEWNNchFtGexU3v/ZUmpE4sft1IOuLXRCd2UW4ctQHHbIuW91y4EQFUhwWEQwxjkxn88c7DJdd94S9W4rbvHcn9W09ijnLtsbrou55+kPuelfbXBTkjKgtF4azomDEnKOfXqyVWamh8qiRAd/MzfXj63qV46OfTQbz1sQi+uvQqXDanGpfUatvB0eKrreSSwDkvME7Tp3zT7hLkw0wECTU9MRrvYCVKNkaKZyuONzLT5mJ7cHwwjnuffhtHtt2o+ZpG7i8lMcjPaOlUHJUb8awUQ1tIUONjtMYGCgKbHtdrC7+fFSHbL2cuTBZ8TquLq5b2FMsmYwwhBnx7XZthGTUaI2m1/Q2qnBHep6Jjxoygt8ieFr/ecrFS6ax8cWaBTU+Guvb24Y4n38S9T7+NZMramIJyftn5/RESoPqsVKCQIMqjRU/K6Z1UdFXCqngjt2K+1JIYGH0uPfbIjXhWiqG9SFDjY4o3Nxa31KN7bSsmUhnD8wszsaxaYxUFgaGxNjrtQsq5Jk8cJUSRI5XJ4vHbr0dvZ7utWUrLEVQ5I7wPnYzpQOkoXa3wqxU7nJGQILtbEwkJ2Ldpma3FDtUK3Mn1x577luK5LSuQzoiWxqoQRCVg1E0oX+8YY3jkxXcKXIWtWjCZKXhpxqUoP4mBFbvWZI/046ZLblBPCvNPYha31OPBmxcV1O0rJ5Ny/dIQi+CBmxah//RYQZxrJivi7Pmk6sJJ68mQVfqj5PL42MsDthZvViKockZ4H4oZ04Fc/FTXf7wat35uPrry4rl6O9uxqFm58Kle5GLGvr+xHYfyCjzbWexQaRDWE+zqt8BYwhd4pjCrVWjRk3KfsXuhYTTmy2ziECtjxsgelVIuNlLu/c2bXYVkKpCTVsdjxqQEGGp6rVXvpBiz0/HJgrlJudgurXpqlf4oXWf7bdfh0jnVtDkCb8QlE5ZBMWNWIOdScMfSq3IZCYHpo/WuvX149hs3YH5DjTXF4MICPjNTcDmTFRESGPa88QF6/8eHuXs+dOAEntuywtT9lJReyS9bT/rlSk7VTBBa0aIn5T4j7e6+eP/KgsyDVmE05stM3Syptll9TQT7Ni2bTmIQEQxnUyR7VEi5SbjS+9t+23W49+m36WTRIPknMROpTEFiHCkWPJXJIpMRdWVuFQSGrIjcQgworAempHtaT4as0h+l6yxorsP8+ljFyxKd4FcOFDOmg+J4ic2rFuDTRErWmAyNTZUUhDVDOCzg8voYrmycjuCVFmL591QqdpgfG/FJPImz55Ml/uhG6mvoiR/xY30hgnAaLXqiVZfOXpjCHU++iS8+ehhf2f0G3j19AZ8myseg2RHPaVWx6Utqp2OorrykBs2zqg1PSMgeFaK02JLGMKX3VxMNyX6e0I60uVETDWN+QyznrijVDrvjyTcxMDSGXa8OKL4fOcrVA1PSPS2ximr6o8eWKF0nFgmVZJOsxHjzcnpJBAdajOmgOLizsTaKkURK1phIJ0xWIhmkLOd46p4v5AJdpXsqFWzOX2Rt6D2Kfx9O4G+eP1Gw2DKi9HqCXSkwliDKo0VPtHxGTp+7nunDbwfPl2yy2FHotHjyFIt6a/FD9qiQcotlpUlzPJmW/TyhH0kmt65emIsbAy5623S0txR8vlx/q70zs7qnpD8NsYguW6JFD/XYp6At2ugEv3IgN0UdyKV0ffKXJ7Gjo60g6PZ7d34e33v9ffzhFdfh49EJS/x85Y6rd65vw6MvTQe6Kk0k5CZlcq4KckrfVDf9e6Vn0BPsSoGxBFEeQWBY2FSH/V3LcwXem+uqdOud2klGsYuSWRfCYpRca/bct7SkyLxbix+yR4UoJW4ApuN6GmKRksQt0viT//lKPVm0Akkma6vks4YW60q5/pZLtiPFjJnVPSX90WtL1PRQCptIpjM4c34STXVVODWaVLymHpc+v8RhUar9yoEWYzrJj5cQRY4HblqEXa8OoHttKxpro7ikNop9v/oIW1dfi0defAev9A9Z4ucrZ+QeOnAC+zYtUzUmWl0VipV+cUs9Hr5lEe548k1Vw6YnfqTcZzMZEUPjUwWTUKuSoBCEnRQWZZ2O0TISzySKXFNsSDldUhrE48m07hg0vShNyJ7bssJTix8v1IjzCnIT953r23D/s8dzm30Lm+py7y8SFjA+mcHw+BQAOlm0CkFgiEXCsrrbPKsq93u5sjFyiwur64EVt7VYf5RsSTKdhShyxY3a4uuoZVk8PhiXtU9aF4J+isMyk72W8Be0GDOBZOy+va6twNjds/IPcGo0ia//0R+go70FPYdPmi5OqmTkABielOXvsBQr/dbVC3NZy6R72VlgVS5jZM/Gdnxm3sWslH7ZzSIqg3x5FNi0jjyw/7emBnirTqmUdsUfe3lAMQbNqt1XJVuVzogFheK9ipydARBo25M/cU+mszg5NI5HXxrIlUeQk8G5tdxTi+ugoDQBv3xOTPEESW1xYcV4XW7slf4OyBehPjk0jsRURrM9VPLoeeqeL+DhAydk095r3VSy2hPATugEv3KwbTHGGPsxgLUAhjjn18387hIA+wBcDeBDABs456N2tcEJio2dKHK8e/oCHtj/m5JJkBk/X6MTJq2uCsVKn+XcUV/lofGp3EJMutfmZ/qwv2s5Lq+P+Wo3iwg+xfL41D1fQPcL75ge4K06pZL0+bktKzAxlcUH5xK52j1KMWhW7b762bVGqYbbVEYMvO2RxrKPRydw79NvF/xNTgbpZNEe1Cbgcv1t9+Ki3Nib//emuirsXN9WUH4iv26Y1jYp2cHzyTQevmUR5s2uLrFPWu2O3+KwSM8qAzt9wJ4GcEvR7/4awGuc84UAXpv5d6AYSaRk08luXb0QjBkfuI0GnOcb9iPbbsT+ruX4D021+Pa6NkXXpysaanKuEvnYOaFKZ0VZA5nJTmeIpKxChJcolseaqHych94B3sosf4LA0DyrGldeUoPrrpiD7965GM9vWSmr9/k2Qu4zevBzcgw5O/PRyERF2R7KNOk+WjIaSti9uCg39ub//fhgHI++NIC9X1+KfZuWoXttq6proRJKMjiSSOGhAydQVx0u6ROtdofkm/Aitp2Mcc5/yRi7uujXtwFYNfPzTwAcBrDNrja4gZJhvLKxBiETm6hmjquN7Kw47ascCQmyu1rh0PR+gd92s4hgUyyPktuv2dMgO/ROi/5bufvqZ9caOTtj1ULbL1Ccir+w+yS63Nhb/Pfjg3G8d3ZctoC11japuVlLLs/FaLU7JN+EF3E6Zmwe5/w0AHDOTzPGmpU+yBjbBGATAFx55ZUONc88SoZxeGwKs5vqFL+X75MdCQsICwzJVOHPTk5qnJ5QNddVoWdje0nMWHPd9ATRz65PhHewyq4Uy2PP4ZMl7jlGBng3FjKS7RFFEVkOcM5N2x2/utbI2ZmJVLaibI+fF9Nu4tacxerFRXF8mFSWQkn+5XTmYN8gejvb0bW3z1CbJBnc37Ucn8STGEmkcids+Vk+5TI8yyUDKY53I/kmvAbj3L46DDMnY4fyYsbinPP6vL+Pcs4byl1nyZIl/NixY7a100pEkWPgzBi+ufeiYdy14Xo01lXh6sZaWYUvl7a+OIV90GIVJKRsipmsiHBRNkWKGSNkMPXizdgVOXl8+t4voCYSQoYD1RHBUDZFp5GeY9erA7h7xTUFJToqxe7kk98fHe0taKyN4or6asQnMgU2vVL6o4JxzbYYwarkVkrjbF1VCP8+lEBNNISJVBZXNdbk5jNK31nYVIfRZNpUm7SU9FHTQ5o3EB5DUeicXowNAFg1cyp2GYDDnPNF5a7j1mLMiIETRY4PRxL4aGQiZ7haLonh6ktqFdO0D49NYd3uIyU7T91rW9G1t6/kZy9m/XECyqZIFOHqhCkI8ijZnu61rbJuRZVodzIZEQNDYwW7+nvuW4q66jDSGdG371orQZBrC6jIxZjSXOTZb9yAO3/4luKCxk6ZuVhvbDrL5xOvvZ/L8lnOLik9T6XYMsJzKCqF026KLwK4G8B3Zv7/gsP314zRHZWRRCpX2FSinPKr1QKT+zk/VqGSBk6/uj4RwaJY5y6bE/Otzkm2R6o7mI+a3Qkyo8l0biEGTD/7XT/+FZ7fstIXqfnNQCcJ/sPIO1OaNyjNRYbGplSzNdo5NuvN8pkPxZoTfsG2bIqMsZ8BOApgEWPsFGPs65hehN3EGHsfwE0z//Yk5xJThjJoGVF+pew+8WRa9mfJV1sywut2H8HKHa9j3e4jGDg7BlG077STICqZoOmcZHukBCT5KNmdoOPHCZwocgyPTeHj0QkMj00ZlkfKWus/9L4zNRumlsUwHzf0wUgWxCBkTrRKtwlvY9tijHP+Vc75ZZzzCOd8Puf8R5zzEc75as75wpn/f2rX/c0gihwTU8YGZCPKL5eSdef6NvQcPlnyc34QLA2cBOEsQdM5yfYc7BvEjo42RRtUSdnG/DaBs3KDwI8L0UpH7ztTs2Fyc5HeznYc7BssuIYb+mCkZIafy2wAwdv8I5Rx2k3RF4wkUvjgXMKyIsvllL84e5WUyey7dy4u+LnYDZEGToJwlqDpnGR7vr2uDaIoYn/X8oJsinJ2J+j4LfW1lUV/KWut/9D7ztRsmFwmzYZYBA/ctAj9p8dc1QcjWT79nhnU7oLehHegxZgMqUwWT7z2PnZ0tBVkF+vd2K6ryLIe5Zf1ua5V+HkGGjgJwlmCqHOq8R4ydifo+G0CZ+UGgd8WooT+d1bOhsnZA6/og5HYND/Hmgdt849QhhZjMkTDIQyPT+Gxlwewc30bLp1djSwHaqPaJlxOKT8NnAThLKRzlYFXJnBaEjRZuUHgt4Uoof+dabVhlZQczKsEcfOPkMfW1PZWYWeaWDmDA0Cx9o7VmaXMGjwymEQF40r6abt1jnSaALRnyfNLBkSfybWvUtvrpdy7sFOmfCYHruIX3S4HvfMc7tQZswq7DJuaoAPAmQuT2NB71LYaFUFRNIJwicBNmMgmEBJ6aiR5fbLjQ7kOnG3Rg131uXwoB67jdd0uB73zAhQf2LZsin5ALauQIDBwzm311w1aZjaCIMxBNsF9vJJKWk+8iORWeUVDDZpmVXlukkNy7S/silVySw68otNG8Lpul4N0XxsVHTOmZnBEkSMrckv9dYt3OCg4kyCIfNywCX7febUSL+3iBilehMY6fxEJC7bInlv2zSs6XYmQ7mujok/G1OrJjCRS+Lt/6i+pvdPbWT6johxy9SKkxZ7c/QmCqDycrnFFdWwK8dIurt9rJOXjt9ptlYwocoxPZrBzfZvlsueGHHhJpysR0n1tVPTJmFpWodPnk3ilfwjDYyl0r21FfSyCeDKNuQZ3jfMNwuKWemxetQCjE2n89Bs34Nv/1I9X+od8PdgSRKVjxQmT09kaqY5NIV7axQ1SZkPKQuofRhIp3PXjX6Gprio395lIZTFv9rQ9GB6bMiyPbsiBl3S6EiHd10ZFL8akwe7F+1cimcoiyzmqI9OrdWk1f3wwjq69fQAuBrAaQTIIi1vq8eDNiwrrl3W2Y/tt10EQBN8OtgRRyVjlCuP0BJwmKoV4zTXQrhT7TrumBmlhGXQkm3BqNJmb+wDAW//nn5i2cW7Igdd0utIg3ddGRbspSpy9MIU7nnwTX3z0ML6y+w0MnB1DQyxiqYuIZBA2r1qQW4gByBk8QRB8GZxJEIS1rjBOBmyTC0khQXINVMIt11S/JyKoFJRsgsgha+POJaZ0Xd9pOagEnfY6pPvlqeiTMUDdTcfK1bxkEBJTGdqJJoiA4dcTJnIhKaQSdnHJNZVQQ8kmpEVR1sZNpkWXWqqNStBpwv9U/GJMbRJlpYuIZBDOXJikI3OCCBh+dYWhiUopdrkGegW/bhwQzqBkE06fT8rauJAPTEXQdZrwPxXvpqh0JB8Ja+8arTUsBIHh0tnVdGROEAFDiyuMV2vd+MGFxKt950fINbVyUdOj/L+NJFJorI0W2IRYNFSSYXHn+jbEoiQ3BGEWxrn3BzU7q9nLBd7vXN+GebOrcXVjbdmJiZHAfarrQxCWYEpprLYranpNtW6MQ31nLdSfmvCUbbECtfcOoKxMiCLHhyMJfDQygZpoCBOpLK5qrNE0TyIIAoCKXan4xRgAfJqYwm8Hz6MmGkI8mUbP4ZMYHp/S5EM/PDaFdbuPlBzdk/89QdiObyZMZCeMQ31nPbQhWBbf2BatqOkRAE06RnJDEKZQVJaKixmTMybJVBb3Pv12yWclH3o1A0T+9wRRuWidnJCdMA71nTXQRLqyKadHWnTM7tgrp2SUdIHwGhWxGJMUTxRFnEuk0LW3r+Aoft7sqpLA1DWtzWCM4ePRCWRFjr8rKswsHd/7NXCfIAhz6HH38pqd8NNkxGt950cqxTXRT3LtNOX0yCkdU3pHTslopeiCHKQf3iXwCTzya6r85tT53EIMuJjSN5Pl6O1szwWmrmltxtbV12JD71Gs3PE67vzhW7h7xTVY3FJfUj+IalgQRGWip7aYl+yEW3WmjOLn5Chewco6eF7Fb3LtNGp65JR9UntHTsmo3vsExbaQfnibwJ+M5StefSwiexQ/kcriH//lPXSvbUVjbRSXzqnG//bkmzg1msTilnpsXrUAVWEBj65vw8MHTuD4YDx3fE+poQmiMpHcfiQbUR+LIJ5MQxRL6+54yU74rc5Uub6r5J1urVSCq6ff5NppyulROR2z4kRF7R05JaN67hMk20L64W0CvxjLV7x4Mi17FP/BuQRe6R/CK/1DAIADm5fnJlkP3rwI2w6eyCnijo42/OSNDwqO76mGBUFUHtFwCGtam3H3imsKbERvZzuaZlWXDNZesRN+nJir9R1NMspTCa6efpRrp1HTI6W/WbkgUXtHTsmonvsEybaQfnibwLsp5tdU6Tl8Ejs6Cutk9G5sxy/+7TR6O9uxb9My9Ha2I50VMb8hhs2rFuQmWcC04G47eALf+lIruSESRIXTWBvFt77UWmIjuvb2edr9S6nOVCwa8qU7Dk0yyuMlN1m7oPpp9qDm1qfXhU/tHTklo3ruEyTbQvrhbQJ/MtZYG8We+5bmamNwAD/vWgaRTwtnJASs+/wVeOjAxZ3t73/t83j63i8gPpGWVcSQwHx3RE0QhLUIAkNIYL4brKXJSP5O9577luLshSnL3HGcDBSvhFMfs2h1k/VzgL+cXAdtwekGSguSyXQW756+gK5n+jTbDLV35JQrt577SN4PHe0tOTf0g32DvrQtpB/eJvCLMQCYyojofuEdWYMxNDaZW4gB00bmz3/6a/zsm8vw/7d390FyVWUex7+/ZDJhMkQTQ2CBoLwsUoUawEQEo7uwsIgvC6Io7orgusJS7C4ipaKFi2tt7ZaIrJZaiMj6wuI7kNXCUqEQiAYwJiEJAYnyKpGXhGwCYRwyCfPsH/dO7AzTmelM973n3vl9qrqm50533+dMn/v0Ofece3qfGV3+kDezpqrYERipMRIEZ1x+e1um4xR9nYUbGWMz2jTZql8fk9J1mXXSLMdt2Ta4vSMGY8sZo71HRU3lHut+ZvZM4bzjXs45DR3OK06fx8yeKR2Psd18fKSt9tMUR1s5Z+u2wRHP+jz5zHPsNmVS7ad2mNmuq+r0r6HGyL4zpzF7+tSmeXBXRviKXrmvsZGx+MJjWXjugsp0IFJShxUXh9dr14HxGynHXXrqXPoHtu1SzqjSe7Sxf+v2jhhk5TvnmmVs7N9acmS7pkr/+4mm9iNjo835bXbWZ0PfAHu/eDefSTCzpupytrGdI3xlXGeRyuIoVVan62OsfYbnOIB//vZdnHPMQZWbFdAqHxNWlNqPjI120eKs3u4dvmNsaMXEoXnBPpNgZjtThxzRzhE+XyheTX7frJnGHNfdNZn1z24ZcUG0KswKaIWPCSuKItJfMWv+/PmxdOnSXXruWObBb9s2yGNP97Nu8xY29A1w3bJH+dBfH+KpLmZpG9fBOZ68UkftWryh6tceTVR+33bg3NJEYz2ZvftUzjvuYA7Yo5dpUyezR281T0Y142PC2qxppal9Zwx23sho/JskJgsmTZpUyalGZhNMJRtMVV6xbqwmQhnryO/bdpXMLUVpZz1Jvc6lHp9VStOKU/trxqCYLzM0MxvNRMk5voarmvy+2Vi0q55UIR/6mLAi1P6aMaDpFxPWYfUoM6sO55xqa/VLbs3GaiLWLedDs0ztR8ZGOvNy9fuPZPfduugf8Eo5ZlacibI6Vx2n9lThLL5V00StWynnwzrmMEtX7UfGNvUP8MTTz3HZOw/jK++dx+sOnMWTzzzH2y+/nfue2OyVcsysMBNhda6hhuUply9mwSW3cMrli1nz5ObKn+kf6Sz+525awxPPPDehRjOs/SbqCFGn8uGcNGWpAAAReklEQVR4RxnrmsMsXbXujA0OBo9veo5//eFqTrvyTv79hnt5z1Ev4+uLH2Ltxv4JsTSrmaWjql8S3Yq6NiyHn8U/Yr8ZnPm6A3jXV+5wg83GJeURok7qRD5sR0eqrjnM0lXraYqb+gdYt3kLl73zMDb1b+WKWx/gn769nE+//VW8Y95+zOiZwtbnB7n01LnsO6OHnu4uD0Wb2YjaMW2lLl8SvTN1bVgO/2Lsc445iAuvW/WCBtvCcxfscMG/pzvZaNrxpeup1LNW4uhEPmzWkRp+XO5MXXOYpau2nbHGUbGhOdiXvGMun/3ZGvaZ0cMZX1uyffulp85l9926eEmvV8wxsxdq5zUddV+dqx0NyxQNncUfqgOzertHbbBN1GuBrDXD61arI0Sp1LNdiaPd+bAdHam65jBLVynTFCU9LOluSSskdeTLODb0DfCP1yzb4ezIhdet4rzjDuaRDX/cYftHrl3FNk8tMbMmPG1l7Oo6FbPxLP7iC49lnxk9o17v4npjYzG8bi08d0FLHalU6lkKcbTjOrS65jBLV5kjY8dGxFOdevFmZ0f236OXC7634gXbt24b7FQoZlZxnrYydnWeitl4Fn9wMEYdzXC9sbEazwhRKvUshTjGO8oI9c5hlqbaTlNsNsw8tWsS65/dssNjPfxsZjszlmkrqVyzkYK6T8WEsTXYPN3JRtOOvJFKPUshjnZ1pCZCDrN0lLWaYgA3Slom6exO7GCkYeZL3jGXby5+kCtOn+fhZzMbs9GmrXgp5IlpqMG278xpzJ4+9QUNPk93sp1pV95IpZ6lEsdox6VZahRRfGNB0j4R8ZikPYGbgH+JiEXDHnM2cDbAS1/60nmPPPJIy/sZHAyeeOY5HtvUz4a+Aa649QHuenQTJxy6J/920iuJiAl/Btuswlo+aMeTV3Z2Bnv95i2ccvniF5wRbmUFL6snj5hWUiG5pZ15I5V6lkocZglqeiCUMk0xIh7Lf66TtBA4Elg07DFXAlcCzJ8/f5d6jJMmiYjg1Cvu2GH7jfeu45N/E+w7c9quvKyZVdR48srOpq2kcK2EpcnTnSaGXckt7cwbqdSzVOIwq5LCpylK6pU0feg+cAKwulP769Q3vJuZDXGeMbNWOW+YGZRzzdhewC8lrQSWAD+OiJ92amepzGE2s/pynjGzVjlvmBmUME0xIh4EDitqf16i1Mw6zXnGzFrlvGFmUOOl7Rt5DrOZdZrzjJm1ynnDzMpa2t7MzMzMzGxCc2fMzMzMzMysBO6MmZmZmZmZlcCdMTMzMzMzsxK4M2ZmZmZmZlYCd8bMzMzMzMxK4M6YmZmZmZlZCWr7PWODg8GGvgF/kaKZ2U44V5qlz8epWX3VsjM2OBiseXIzZ129lLUb+5kzs4evnjGfQ/aa7uRlZpZzrjRLn49Ts3qr5TTFDX0D25MWwNqN/Zx19VI29A2UHJmZWTqcK83S5+PUrN5q2Rkb2Pb89qQ1ZO3Gfga2PV9SRGZm6XGuNEufj1OzeqtlZ6y7azJzZvbssG3OzB66uyaXFJGZWXqcK83S5+PUrN5q2Rmb1dvNV8+Yvz15Dc2vntXbXXJkZmbpcK40S5+PU7N6q+UCHpMmiUP2ms7Ccxd45SEzsyacK83S5+PUrN5q2RmDLHnNnj617DDMzJLmXGmWPh+nZvVVy2mKZmZmZmZmqXNnzMzMzMzMrATujJmZmZmZmZXAnTEzMzMzM7MSuDNmZmZmZmZWAnfGzMzMzMzMSlCrpe0HB4MNfQP+Hg4zM7Nx8mdq+vwemVVfbTpjg4PBmic3c9bVS1m7sX/7N9Qfstd0JyYzM7MW+DM1fX6PzOqhNtMUN/QNbE9IAGs39nPW1UvZ0DdQcmRmZmbV4s/U9Pk9MquH2nTGBrY9vz0hDVm7sZ+Bbc+XFJGZmVk1+TM1fX6PzOqhNp2x7q7JzJnZs8O2OTN76O6aXFJEZmZm1eTP1PT5PTKrh9p0xmb1dvPVM+ZvT0xDc6dn9XaXHJmZmVm1+DM1fX6PzOqhNgt4TJokDtlrOgvPXeBVhczMzMbBn6np83tkVg+16YxBlphmT59adhhmZmaV58/U9Pk9Mqu+2kxTNDMzMzMzqxJ3xszMzMzMzErgzpiZmZmZmVkJ3BkzMzMzMzMrgTtjZmZmZmZmJXBnzMzMzMzMrATujJmZmZmZmZVAEVF2DKOStB54ZIwP3wN4qoPhtCqleFKKBdKKJ6VYIK14Uo3lqYg4cVdfqMW8MnzfE4HLW38TrcxjLW+RuaVu70HdygP1K1PdygPVKFPTvFKJzlgrJC2NiPllxzEkpXhSigXSiielWCCteBxL+fsug8tbfxOtzCmWN8WYxqNu5YH6lalu5YHql8nTFM3MzMzMzErgzpiZmZmZmVkJ6tgZu7LsAIZJKZ6UYoG04kkpFkgrHsdS/r7L4PLW30Qrc4rlTTGm8ahbeaB+ZapbeaDiZardNWNmZmZmZmZVUMeRMTMzMzMzs+TVqjMm6URJayTdL+ljBexvP0m3SPqNpHskfTDf/hJJN0n6Xf5zZsNzPp7Ht0bSGzsQ02RJd0m6IYFYZki6VtJ9+f/o6LLikfSh/D1aLek7knYrMhZJX5O0TtLqhm0t71/SPEl353/7giS1KZZL8/dplaSFkmYUEUuzeBr+9mFJIWmPouJpEmOhuaUI7aqTVZFivu6kPMctkbQyL++n8u21LC+k9fk3hlgrmVPqehxVqe6MRgm1vdpFJbfhOi4ianEDJgMPAAcC3cBK4NAO73Nv4NX5/enAb4FDgc8AH8u3fwy4JL9/aB7XVOCAPN7JbY7pAuDbwA3572XG8k3gA/n9bmBGGfEA+wIPAT35798H3ldkLMBfAK8GVjdsa3n/wBLgaEDAT4A3tSmWE4Cu/P4lRcXSLJ58+37Az8i+r2ePouIZIb7Cc0sRt3bVyarcSDBfd7i8AnbP708BfgUcVdfy5mVI5vNvlDgrm1PqehxVpe6MsSxJtL3aWJ7S23CdvtVpZOxI4P6IeDAiBoDvAid3cocR8XhELM/vbwZ+Q1ZpTiY7GMh/vi2/fzLw3YjYEhEPAffncbeFpDnAW4CrGjaXFcuLyBp7/w0QEQMRsamseIAuoEdSFzANeKzIWCJiEfB/wza3tH9JewMviog7Iss4Vzc8Z1yxRMSNEbEt//VOYE4RsTSLJ/c54KNA44WtHY9nBIXnliK0o04WEmibpJavOy0yz+a/TslvQU3Lm9Ln3xhUNqfU8TiqWN3ZqQTbXu1Sahuu0+rUGdsXeLTh97X5tkJI2h84guzs414R8ThkiQvYs6AYP0/WeB1s2FZWLAcC64Gv50P/V0nqLSOeiPgD8Fng98DjwNMRcWMZsQzT6v73ze93Oq73k40slRaLpJOAP0TEymF/KiOeUnNLwco+JgqRSL7uuHzq1QpgHXBTRNS5vCl9/o2m7P23RY2OoyrVndEk0/Zql4TbcG1Tp87YSNeHFLJUpKTdgeuA8yPimZ09dIRtbYlR0luBdRGxbKxP6VQsuS6yKVBfjogjgD6yYeTC48nnEZ9MNly9D9Ar6fQyYhmjZvvveFySLgK2Ad8qKxZJ04CLgItH+nPR8XT4tauiNv+DFPJ1USLi+Yg4nGyk+0hJr9zJwytb3gQ//1Lf/7jV5TiqYN0ZTTJtr3apYBuuZXXqjK0lu8ZkyByyYcyOkjSFLCF9KyKuzzc/mU+bIv+5roAYFwAnSXqYbMrDX0m6pqRYhl5/bX4mFuBasgRRRjzHAw9FxPqI2ApcD7yupFgatbr/tfxp+mDb45J0JvBW4D35VL+yYjmILOmuzOvzHGC5pD8rKZ5ScktJyj4mOiqhfF2ofJrSrcCJ1LO8qX3+jabs/Y9LzY6jqtWd0aTU9mqXVNtwbVOnztivgYMlHSCpG3g38KNO7lCSyObl/iYi/qvhTz8Czszvnwn8sGH7uyVNlXQAcDDZogPjFhEfj4g5EbE/Wdl/HhGnlxFLHs8TwKOSDsk3HQfcW1I8vweOkjQtf8+OI5vnXsr/pkFL+8+H4TdLOiovxxkNzxkXSScCFwInRcQfh8VYaCwRcXdE7BkR++f1eS3ZBeNPlBEPJeSWEpV9THRMSvm6CJJmK18VVVIPWYPmPmpY3tQ+/8agsjmlbsdRBevOTiXW9mqXVNtw7RMJrCLSrhvwZrKVfR4ALipgf68nG/pcBazIb28GZgE3A7/Lf76k4TkX5fGtoU2rvY0Q1zH8aUWg0mIBDgeW5v+f/wVmlhUP8Cmyhshq4H/IVtkpLBbgO2RznbeSdS7+YVf2D8zPy/AA8CXyL25vQyz3k82xHqrHVxQRS7N4hv39YfLVFIuIp0mMheaWIm7tqpNVuZFovu5geecCd+XlXQ1cnG+vZXkbynAMCXz+jSHOSuaUOh9HVak7YyhHMm2vNpap1DZcp2/KgzYzMzMzM7MC1WmaopmZmZmZWWW4M2ZmZmZmZlYCd8bMzMzMzMxK4M6YmZmZmZlZCdwZMzMzMzMzK4E7Y1Y5kt4n6UstPud8SdM6FZOZVZekqyQdmt9/tux4zCxdkmZIOrfh92Mk3VBmTFZt7ozZRHE+4M6Ymb1ARHwgIu4tOw4zq4QZwLmjPmqMJHW167WsmtwZs0JI+qik8/L7n5P08/z+cZKukXSCpDskLZf0A0m7539/jaTbJa2UtETS9Pwl95H0U0m/k/SZhv18WdJSSfdI+lS+7TxgH+AWSbcUWnAzK8w48sytkuY3vM5l+WNuljQ733a4pDslrZK0UNLMMspoZsWSdIGk1fntfODTwEGSVki6NH/Y7pKulXSfpG9JUv7ceZJuk7RM0s8k7Z1vv1XSf0q6DfigpHfmr79S0qJySmplcWfMirIIeEN+fz5Z4poCvB64G/gEcHxEvJrsm+MvkNQNfA/4YEQcBhwP9OevcThwGvAq4DRJ++XbL4qI+cBc4C8lzY2ILwCPAcdGxLGdLqiZlablPDPCa/QCy/PH3AZ8Mt9+NXBhRMzNX+uTIzzXzGpE0jzg74HXAkcBZwGXAA9ExOER8ZH8oUeQzcA5FDgQWJDnni8Cp0bEPOBrwH80vPyMiPjLiLgMuBh4Y97WOamAollCPDRqRVkGzMtHtrYAy8kaS28AfkSWwBbnJ5O6gTuAQ4DHI+LXABHxDED+mJsj4un893uBlwGPAu+SdDZZ3d47f91VxRTRzEq2K3lmuEGyk0AA1wDXS3oxWcPptnz7N4EfdKoQZpaM1wMLI6IPQNL1/OmET6MlEbE2f8wKYH9gE/BK4KY850wGHm94zvca7i8GviHp+8D1bS6DJc6dMStERGyV9DDZGabbyTpIxwIHAQ8BN0XE3zY+R9JcIJq85JaG+88DXZIOAD4MvCYiNkr6BrBbO8thZunalTwzlpdta5BmViUa4+Ne0CbJn3tPRBzd5Dl9Q3ci4hxJrwXeAqyQdHhEbNiVgK16PE3RirSIrLO0CPgFcA6wAriTbEj/zwEkTZP0cuA+smvDXpNvnz7Kha4vIktuT0vaC3hTw982A9NHfJaZ1UmreWa4ScCp+f2/A36Zj8JvlDR0Rvy9ZFMYzazeFgFvy/NFL3AK2SjWWNoTa4DZko4GkDRF0itGeqCkgyLiVxFxMfAUsN9Ij7N68siYFekXwEXAHRHRJ+k54BcRsV7S+4DvSJqaP/YTEfFbSacBX5TUQ3a92PHNXjwiVkq6C7gHeJAsYQ65EviJpMd93ZhZrbWUZ4DfDnt+H/AKScuAp8muTQU4E7hC2VdkPEg2+mZmNRYRy/NZNkvyTVdFxDJJiyWtBn4C/LjJcwcknQp8IZ/q3AV8nqyNMtylkg4mG027GVjZ5qJYwhThGRhmZmZmZmZF8zRFMzMzMzOzErgzZmZmZmZmVgJ3xszMzMzMzErgzpiZmZmZmVkJ3BkzMzMzMzMrgTtjZmZmZmZmJXBnzMzMzMzMrATujJmZmZmZmZXg/wFcIfCIqokoCAAAAABJRU5ErkJggg==\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"X = np.array(df_ads.wechat) #构建特征集，只含有微信广告一个特征\ny = np.array(df_ads.sales) #构建标签集，销售金额\nprint (\"张量X的阶:\",X.ndim)\nprint (\"张量X的形状:\", X.shape)\nprint (\"张量X的内容:\", X)","execution_count":4,"outputs":[{"output_type":"stream","text":"张量X的阶: 1\n张量X的形状: (200,)\n张量X的内容: [ 304.4 1011.9 1091.1   85.5 1047.   940.9 1277.2   38.2  342.6  347.6\n  980.1   39.1   39.6  889.1  633.8  527.8  203.4  499.6  633.4  437.7\n  334.  1132.   841.3  435.4  627.4  599.2  321.2  571.9  758.9  799.4\n  314.   108.3  339.9  619.7  227.5  347.2  774.4 1003.3   60.1   88.3\n 1280.4  743.9  805.4  905.    76.9 1088.8  670.2  513.7 1067.    89.2\n  130.1  113.8  195.7 1000.1  283.5 1245.3  681.1  341.7  743.   976.9\n 1308.6  953.7 1196.2  488.7 1027.4  830.8  984.6  143.3 1092.5  993.7\n 1290.4  638.4  355.8  854.5    3.2  615.2   53.2  401.8 1348.6   78.3\n 1188.9 1206.7  899.1  364.9  854.9 1099.7  909.1 1293.6  311.2  411.3\n  881.3 1091.5   18.7  921.4 1214.4 1038.8  427.2  116.5  879.1  971.\n  899.1  114.2   78.3   59.6  748.5  681.6  261.6 1083.8 1322.7  753.5\n 1259.9 1080.2   33.2  909.1 1092.5 1208.5  766.2  467.3  611.1  202.5\n   24.6  442.3 1301.3  314.9  634.7  408.1  560.1  503.7 1154.8 1130.2\n  932.8  958.7 1044.2 1274.9  550.6 1259.   196.1  548.3  650.2   81.4\n  499.6 1033.8  219.8  971.4  779.4 1019.2 1141.6  994.2  986.4 1318.1\n  300.8  588.8 1056.1  179.7 1080.2  255.7 1011.9  941.4  928.7  167.9\n  271.2  822.6 1162.1  596.5  990.5  533.3 1335.9  308.5 1106.6  805.4\n 1002.4  347.6  443.6  389.9  642.9  243.4  841.3   35.5   85.1  784.9\n  428.6  173.8 1037.4  712.5  172.9  456.8  396.8 1332.7  546.9  857.2\n  905.9  475.9  959.1  125.1  689.3  869.5 1195.3  121.9  343.5  796.7]\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"X = X.reshape((len(X),1)) #通过reshape函数把向量转换为矩阵，len函数返回样本个数\ny = y.reshape((len(y),1)) #通过reshape函数把向量转换为矩阵，len函数返回样本个数print (\"张量X的阶:\",X.ndim)\nprint (\"张量X的形状:\", X.shape)\nprint (\"张量X的内容:\", X)","execution_count":5,"outputs":[{"output_type":"stream","text":"张量X的形状: (200, 1)\n张量X的内容: [[ 304.4]\n [1011.9]\n [1091.1]\n [  85.5]\n [1047. ]\n [ 940.9]\n [1277.2]\n [  38.2]\n [ 342.6]\n [ 347.6]\n [ 980.1]\n [  39.1]\n [  39.6]\n [ 889.1]\n [ 633.8]\n [ 527.8]\n [ 203.4]\n [ 499.6]\n [ 633.4]\n [ 437.7]\n [ 334. ]\n [1132. ]\n [ 841.3]\n [ 435.4]\n [ 627.4]\n [ 599.2]\n [ 321.2]\n [ 571.9]\n [ 758.9]\n [ 799.4]\n [ 314. ]\n [ 108.3]\n [ 339.9]\n [ 619.7]\n [ 227.5]\n [ 347.2]\n [ 774.4]\n [1003.3]\n [  60.1]\n [  88.3]\n [1280.4]\n [ 743.9]\n [ 805.4]\n [ 905. ]\n [  76.9]\n [1088.8]\n [ 670.2]\n [ 513.7]\n [1067. ]\n [  89.2]\n [ 130.1]\n [ 113.8]\n [ 195.7]\n [1000.1]\n [ 283.5]\n [1245.3]\n [ 681.1]\n [ 341.7]\n [ 743. ]\n [ 976.9]\n [1308.6]\n [ 953.7]\n [1196.2]\n [ 488.7]\n [1027.4]\n [ 830.8]\n [ 984.6]\n [ 143.3]\n [1092.5]\n [ 993.7]\n [1290.4]\n [ 638.4]\n [ 355.8]\n [ 854.5]\n [   3.2]\n [ 615.2]\n [  53.2]\n [ 401.8]\n [1348.6]\n [  78.3]\n [1188.9]\n [1206.7]\n [ 899.1]\n [ 364.9]\n [ 854.9]\n [1099.7]\n [ 909.1]\n [1293.6]\n [ 311.2]\n [ 411.3]\n [ 881.3]\n [1091.5]\n [  18.7]\n [ 921.4]\n [1214.4]\n [1038.8]\n [ 427.2]\n [ 116.5]\n [ 879.1]\n [ 971. ]\n [ 899.1]\n [ 114.2]\n [  78.3]\n [  59.6]\n [ 748.5]\n [ 681.6]\n [ 261.6]\n [1083.8]\n [1322.7]\n [ 753.5]\n [1259.9]\n [1080.2]\n [  33.2]\n [ 909.1]\n [1092.5]\n [1208.5]\n [ 766.2]\n [ 467.3]\n [ 611.1]\n [ 202.5]\n [  24.6]\n [ 442.3]\n [1301.3]\n [ 314.9]\n [ 634.7]\n [ 408.1]\n [ 560.1]\n [ 503.7]\n [1154.8]\n [1130.2]\n [ 932.8]\n [ 958.7]\n [1044.2]\n [1274.9]\n [ 550.6]\n [1259. ]\n [ 196.1]\n [ 548.3]\n [ 650.2]\n [  81.4]\n [ 499.6]\n [1033.8]\n [ 219.8]\n [ 971.4]\n [ 779.4]\n [1019.2]\n [1141.6]\n [ 994.2]\n [ 986.4]\n [1318.1]\n [ 300.8]\n [ 588.8]\n [1056.1]\n [ 179.7]\n [1080.2]\n [ 255.7]\n [1011.9]\n [ 941.4]\n [ 928.7]\n [ 167.9]\n [ 271.2]\n [ 822.6]\n [1162.1]\n [ 596.5]\n [ 990.5]\n [ 533.3]\n [1335.9]\n [ 308.5]\n [1106.6]\n [ 805.4]\n [1002.4]\n [ 347.6]\n [ 443.6]\n [ 389.9]\n [ 642.9]\n [ 243.4]\n [ 841.3]\n [  35.5]\n [  85.1]\n [ 784.9]\n [ 428.6]\n [ 173.8]\n [1037.4]\n [ 712.5]\n [ 172.9]\n [ 456.8]\n [ 396.8]\n [1332.7]\n [ 546.9]\n [ 857.2]\n [ 905.9]\n [ 475.9]\n [ 959.1]\n [ 125.1]\n [ 689.3]\n [ 869.5]\n [1195.3]\n [ 121.9]\n [ 343.5]\n [ 796.7]]\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"#将数据集进行80%(训练集)和20%(测试集)的分割\nfrom sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(X, y, \n                                   test_size=0.2, random_state=0)","execution_count":6,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def scaler(train, test): #定义归一化函数，进行数据压缩    \n    min = train.min(axis=0) #训练集最小值\n    max = train.max(axis=0) #训练集最大值\n    gap = max - min #最大值和最小值的差\n    train -= min #所有数据减最小值\n    train /= gap #所有数据除以大小值差\n    test -= min #把训练集最小值应用于测试集\n    test /= gap #把训练集大小值差应用于测试集\n    return train, test #返回压缩后的数据","execution_count":7,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train,X_test = scaler(X_train,X_test) #对特征归一化\ny_train,y_test = scaler(y_train,y_test) #对标签也归一化","execution_count":8,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#用之前已经导入的matplotlib.pyplot中的plot方法显示散点图\nplt.plot(X_train,y_train,'r.', label='Training data') \nplt.xlabel('Wechat Ads') # x轴Label\nplt.ylabel('Sales') # y轴Label\nplt.legend() # 显示图例\nplt.show() # 显示绘图结果","execution_count":9,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3dfZRcdZ3n8fc3nZAAYQE7qJCQSVAEiYQAbbCDqx2Y0UTdZRxgAcHw4DGARAZcV8RdlDMcCa4ORo4gBjZA73FFVlBxDgw7MIlhSfMQNATC08kCQosiNGNAIYFOf/ePW5VUKvVwq+o+1v28zsnprqpbdX+3kvy+v9/393DN3RERkeIal3YBREQkXQoEIiIFp0AgIlJwCgQiIgWnQCAiUnDj0y5Aq6ZMmeIzZsxIuxgiIrny8MMPv+Lu+9R6LXeBYMaMGaxduzbtYoiI5IqZ/bbea0oNiYgUnAKBiEjBKRCIiBRc7sYIann77bcZHh5m8+bNaRdFgEmTJjFt2jQmTJiQdlFEJISuCATDw8PssccezJgxAzNLuziF5u6MjIwwPDzMzJkz0y6OiIQQW2rIzFaY2R/N7LE6r5uZXWVmG81svZkd0e65Nm/eTG9vr4JABpgZvb296p2J5EicYwQ3AgsavL4QOLD0ZzHwg05OpiCQHfq7kMIbGoKlS4OfORBbasjdV5vZjAaHHAcMerAP9v1mtpeZ7evuv4+rTCIisRsagmOPhbfegl12gXvugf7+tEvVUJqzhqYCL1Q8Hi49txMzW2xma81s7csvv5xI4VoxMjLCnDlzmDNnDu9+97uZOnXqtsdvvfVWw/euXbuW888/v+k55s2bF1VxdzAwMNB0gd6yZct44403Yjm/SNdZtSoIAlu3Bj9XrUq7RE2lOVhcK39Q8y457r4cWA7Q19eXuTvp9Pb2sm7dOgAuvfRSJk+ezJe//OVtr4+OjjJ+fO2vuq+vj76+vqbnWLNmTTSFbcOyZcs47bTT2G233VIrg0huDAwEPYFyj2BgIO0SNZVmj2AY2L/i8TTgxcTOHnMO74wzzuBLX/oS8+fP56KLLuLBBx9k3rx5HH744cybN4+nnnoKgFWrVvGpT30KCILIWWedxcDAAAcccABXXXXVts+bPHnytuMHBgY44YQTOPjggzn11FMp32Xujjvu4OCDD+bDH/4w559//rbPrfTmm29y8sknM3v2bE466STefPPNba+de+659PX1MWvWLL7xjW8AcNVVV/Hiiy8yf/585s+fX/c4ESnp7w/SQZddlou0EKTbI7gdWGJmNwNHAZsSGx9IKIf39NNPc/fdd9PT08Nrr73G6tWrGT9+PHfffTdf+9rXuPXWW3d6z5NPPsnKlSt5/fXXOeiggzj33HN3mo//m9/8hg0bNrDffvtx9NFHc99999HX18fZZ5/N6tWrmTlzJqecckrNMv3gBz9gt912Y/369axfv54jjtg+Weub3/wm73jHO9i6dSvHHnss69ev5/zzz+fKK69k5cqVTJkype5xs2fPjvCbE8m5/v5cBICyOKeP/hgYAg4ys2Ez+5yZnWNm55QOuQN4BtgIXAd8Ia6y7CShHN6JJ55IT08PAJs2beLEE0/kAx/4ABdeeCEbNmyo+Z5PfvKTTJw4kSlTpvDOd76Tl156aadj5s6dy7Rp0xg3bhxz5szhueee48knn+SAAw7YNne/XiBYvXo1p512GgCzZ8/eoQK/5ZZbOOKIIzj88MPZsGEDjz/+eM3PCHuciORDnLOGatdE21934Ly4zt9QQjm83Xfffdvvl1xyCfPnz+dnP/sZzz33HAN1zjlx4sRtv/f09DA6OhrqmHJ6KIxa0zufffZZvvOd7/DQQw+x9957c8YZZ9RcCxD2OBHJj2LuNZRCDm/Tpk1MnRpMirrxxhsj//yDDz6YZ555hueeew6An/zkJzWP+8hHPsKPfvQjAB577DHWr18PwGuvvcbuu+/OnnvuyUsvvcSdd9657T177LEHr7/+etPjRCSfumKLibYknMP7yle+wumnn86VV17JMcccE/nn77rrrlxzzTUsWLCAKVOmMHfu3JrHnXvuuZx55pnMnj2bOXPmbDvusMMO4/DDD2fWrFkccMABHH300dves3jxYhYuXMi+++7LypUr6x4nIvlkraQUsqCvr8+r570/8cQTvP/970+pRNnx5z//mcmTJ+PunHfeeRx44IFceOGFqZRFfyci2WJmD7t7zbnqxUwNdanrrruOOXPmMGvWLDZt2sTZZ5+ddpFEJAeKmxrqQhdeeGFqPQARya+u6RHkLcXVzfR3IdJABjek64oewaRJkxgZGdFW1BlQvh/BpEmT0i6KFM3QULAmaGAgvokgnZ6j2WLW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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"def loss_function(X, y, weight, bias): # 手工定义一个MSE均方误差函数\n    y_hat = weight*X + bias # 这是假设函数,其中已经应用了Python的广播功能\n    loss = y_hat-y  # 求出每一个y’和训练集中真实的y之间的差异 \n    cost = np.sum(loss**2)/(2*len(X)) # 这是均方误差函数的代码实现\n    return cost # 返回当前模型的均方误差值","execution_count":10,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print (\"当权重5，偏置3时，损失为：\", \nloss_function(X_train, y_train, weight=5, bias=3))\nprint (\"当权重100，偏置1时，损失为：\", \nloss_function(X_train, y_train, weight=100, bias=1))","execution_count":11,"outputs":[{"output_type":"stream","text":"当权重5，偏置3时，损失为： 12.796390970780058\n当权重100，偏置1时，损失为： 1577.9592615030556\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"def gradient_descent(X, y, w, b, lr, iter): # 定义一个实现梯度下降的函数\n    l_history = np.zeros(iter) # 初始化记录梯度下降过程中损失的数组\n    w_history = np.zeros(iter) # 初始化记录梯度下降过程中权重的数组\n    b_history = np.zeros(iter) # 初始化记录梯度下降过程中偏置的数组\n    for i in range(iter): # 进行梯度下降的迭代，就是下多少级台阶\n        y_hat  = w*X + b # 这个是向量化运行实现的假设函数\n        loss = y_hat-y # 这是中间过程,求得的是假设函数预测的y和真正的y值间的差值\n        derivative_w = X.T.dot(loss)/len(X) # 对权重求导, len(X)是样本总数\n        derivative_b = sum(loss)*1/len(X) # 对偏置求导\n        w = w - lr*derivative_w # 结合下降速率alpha更新权重\n        b = b - lr*derivative_b # 结合下降速率alpha更新偏置\n        l_history[i] = loss_function(X, y, w,b) # 梯度下降过程中损失的历史\n        w_history[i] = w # 梯度下降过程中权重的历史\n        b_history[i] = b # 梯度下降过程中偏置的历史\n    return l_history, w_history, b_history # 返回梯度下降过程数据","execution_count":12,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 首先确定参数的初始值\niterations = 225; # 迭代250次\nalpha = 0.5; # 此处初始学习速率设为0.5， 如果调整为1，你会看到不同的结果\nweight = -5 # 权重\nbias = 3 # 偏置\n# 计算一下初始权重和偏置值所带来的损失\nprint ('当前损失：',loss_function(X_train, y_train, weight, bias))","execution_count":13,"outputs":[{"output_type":"stream","text":"当前损失： 1.343795534906634\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 绘制当前的函数模型\nplt.plot(X_train, y_train,'r.', label='Training data') # 显示训练集散点图\nline_X = np.linspace(X_train.min(), X_train.max(), 500) # X值域\nline_y = [weight*xx + bias for xx in line_X] # 假设函数y_hat\nplt.plot(line_X,line_y,'b--', label='Current hypothesis' ) #显示当前拟合\nplt.xlabel('Wechat Ads') # X轴Label\nplt.ylabel('Sales') # y轴Label\nplt.legend() # 显示图例\nplt.show() # 显示绘图","execution_count":14,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3dd3xUZfb48c9JSCgiIIG1oRQ7gRAg0sEEFFGwIGJZ1gaK8NXlq65rWQuoK+raXQsgKuqyrBUrNpSAEkBQkK4/Ub6KroqoCEoN5/fHM5OZTGaSmWQmdyZz3q/XvDLllnMnyT33Ps9zzxVVxRhjTPrJ8DoAY4wx3rAEYIwxacoSgDHGpClLAMYYk6YsARhjTJqq53UAsWjRooW2adPG6zCMMSalfPTRRz+qasvQ91MqAbRp04YlS5Z4HYYxxqQUEfm/cO9bE5AxxqQpSwDGGJOmLAEYY0yaSqk+AGNMeLt27WLDhg1s377d61CMhxo0aECrVq3IysqKanpLAMbUARs2bGDvvfemTZs2iIjX4RgPqCqbNm1iw4YNtG3bNqp5PGsCEpEGIvKhiHwiIqtE5CavYjEm1W3fvp2cnBzb+acxESEnJyems0AvzwB2AP1VdauIZAEfiMgbqrrQw5iMSVm28zex/g14dgagzlbfyyzfI2G1qdeuhdLSRC3dGGNSj6ejgEQkU0SWAT8A76jqojDTjBaRJSKyZOPGjdVaz88/Q58+0Ls3rFpVw6CNMRVs2rSJ/Px88vPz2W+//TjwwAPLXu/cubPSeZcsWcK4ceOqXEevXr3iFW45hYWFVV5get999/H7778nZP1e8jQBqGqpquYDrYBuItIhzDRTVLVAVQtatqxwJXNUmjWDBx6Azz+Hzp3hllugir9JY0wMcnJyWLZsGcuWLWPMmDFcfvnlZa+zs7PZvXt3xHkLCgp44IEHqlxHSUlJPEOOiSWABFLVX4BiYFAili8Cf/wjrFkDw4bBjTdCQQFs3pyItRmTIhYsgNtucz8T4Pzzz+eKK66gqKiIq6++mg8//JBevXrRuXNnevXqxaeffgpAcXExQ4YMAWDChAmMHDmSwsJC2rVrVy4xNG7cuGz6wsJCTj/9dI488khGjBiB/86Gs2bN4sgjj6RPnz6MGzeubLnBtm3bxllnnUVeXh5nnnkm27ZtK/ts7NixFBQUkJuby/jx4wF44IEH+PbbbykqKqKoqCjidKnIs05gEWkJ7FLVX0SkIXAscEci19myJcyYAWefDe+8A02buvdVXZIwJm0sWAADBrhT4exsePdd6Nkz7qv57LPPmD17NpmZmfz666/MmzePevXqMXv2bP72t7/xwgsvVJhn7dq1zJkzhy1btnDEEUcwduzYCuPaly5dyqpVqzjggAPo3bs38+fPp6CggIsvvph58+bRtm1bzj777LAxPfLIIzRq1Ijly5ezfPlyunTpUvbZrbfeSvPmzSktLWXAgAEsX76ccePGcc899zBnzhxatGgRcbq8vLw4fnO1w8szgP2BOSKyHFiM6wN4rTZWfPLJ8M9/uudr10JeHsydWxtrNiZJFBe7nX9pqftZXJyQ1QwfPpzMzEwANm/ezPDhw+nQoQOXX345qyJ0yA0ePJj69evTokUL/vCHP/D9999XmKZbt260atWKjIwM8vPzWb9+PWvXrqVdu3ZlY+AjJYB58+bxpz/9CYC8vLxyO+5nn32WLl260LlzZ1atWsXq1avDLiPa6ZKdl6OAlqtqZ1XNU9UOqnqzF3H8+iv8/jsUFsLYse61MXVeYaE78s/MdD8LCxOymr322qvs+Q033EBRURErV67k1VdfjThevX79+mXPMzMzw/YfhJvG3wwUjXDDJb/88kvuuusu3n33XZYvX87gwYPDxhjtdKkgKfoAvNStG6xYAVdcAVOmQG4uvP6611EZk2A9e7pmn1tuSVjzT6jNmzdz4IEHAjBt2rS4L//II4/kiy++YP369QA888wzYafr168f06dPB2DlypUsX74cgF9//ZW99tqLpk2b8v333/PGG2+UzbP33nuzZcuWKqdLNVYKAmjUCO6+G844A0aNgvfeg8GDvY7KmATr2bNWdvx+V111Feeddx733HMP/fv3j/vyGzZsyMMPP8ygQYNo0aIF3bp1Czvd2LFjueCCC8jLyyM/P79suk6dOtG5c2dyc3Np164dvXv3Lptn9OjRnHDCCey///7MmTMn4nSpRmI5bfJaQUGBJvqGMP5m0YYN4f33YcMGOOss6yQ2yW3NmjUcddRRXofhua1bt9K4cWNUlUsuuYTDDjuMyy+/3OuwalW4vwUR+UhVC0KnTfsmoFDZ2W7nD/DII2746CmnwDffeBuXMaZqjz76KPn5+eTm5rJ582Yuvvhir0NKatYEVImnn3bXC1x/PbRvD3fdBRdeaGcDxiSryy+/PO2O+GvCzgAqkZnpOodXrICuXWH0aHj2Wa+jMsaY+LAEEIVDDnEDJZ5/Hk4/3b23Zo0VlzPGpDZLAFEScWUkMjNdcbm+faFXL1i50uvIjDGmeiwBVEOzZvDgg/DFF9ClC0yYYMXljDGpxxJANYi4oaFr1sDw4XDTTS4R/PKL15EZ453vvvuOs846i0MOOYT27dtz4okn8tlnn9VqDMXFxRGrhk6YMIG77roroeufOHFi2fP169fToUOFAscxi7ZcdnVYAqiBFi1g+nR49VXo39+dGQDs2eNtXMbUNlVl6NChFBYWsm7dOlavXs3EiRPD1vGJpDSkUy30dTQqSwC1ITgBxEu05bKrwxJAHAwZ4u43AK64XIcO7mpiY9LFnDlzyMrKYsyYMWXv5efn07dv33LlngEuvfTSslIQbdq04eabb6ZPnz4899xzFV6//fbb9OzZky5dujB8+HC2bt1aNt/48ePp0qULHTt2ZO3ataxfv55JkyZx7733kp+fz/vvv18hztWrV1coNX3DDTdw//33l01z3XXX8cADD1BcXEy/fv0YOnQo7du3Z8yYMezxHd3NmDGDjh070qFDB66++moArrnmGrZt20Z+fj4jRowAXBK76KKLyM3NZeDAgWWlp9etW8egQYPo2rUrffv2Ze3atQA899xzdOjQgU6dOtGvXz+gfLnsuXPnlt1op3PnzmXlKapNVVPm0bVrV012H36oeuihqqB64YWqP//sdUQmHaxevbrc62OOqfh46CH32W+/hf/8iSfc5xs3VvysKvfff79edtllYT+bM2eODh48uOz1JZdcok/4Vta6dWu94447yj4Lfr1x40bt27evbt26VVVVb7/9dr3pppvKpnvggQdUVfWhhx7SUaNGqarq+PHj9c477wwbx/jx47Vnz566fft23bhxozZv3lx37typX375pXbu3FlVVUtLS7Vdu3b6448/6pw5c7R+/fq6bt063b17tx577LH63HPP6TfffKMHHXSQ/vDDD7pr1y4tKirSmTNnqqrqXnvtVba+L7/8UjMzM3Xp0qWqqjp8+HB9+umnVVW1f//++tlnn6mq6sKFC7WoqEhVVTt06KAbNmxQVdWffTuP4O9vyJAh+sEHH6iq6pYt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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 根据初始参数值，进行梯度下降，也就是开始训练机器，拟合函数\nloss_history, weight_history, bias_history = gradient_descent(\n             X_train, y_train, weight, bias, alpha, iterations)","execution_count":15,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(loss_history,'g--',label='Loss Curve')\nplt.xlabel('Iterations') # x轴Label\nplt.ylabel('Loss') # y轴Label\nplt.legend() # 显示图例\nplt.show() # 显示损失曲线","execution_count":16,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de3gV5bn38e+dA4QzCQTlFBIQlaABIaIWKnhA8LBFbQU8oHbXWlqxW313K2239lV7QF+tbqtVsRsVragV2XJZilaqgFUrYBE5KHIQiYAchBCIBJLc7x9rJU1CAiFkMknm97muXKyZZ9bMbw3ryp2ZeeYZc3dERCS6EsIOICIi4VIhEBGJOBUCEZGIUyEQEYk4FQIRkYhLCjvAkercubNnZmaGHUNEpElZsmTJdndPr66tyRWCzMxMFi9eHHYMEZEmxcw21NSmU0MiIhGnQiAiEnEqBCIiEdfkrhGISNN14MAB8vLy2LdvX9hRmq2UlBR69OhBcnJyrd+jQiAiDSYvL4927dqRmZmJmYUdp9lxd3bs2EFeXh5ZWVm1fp9ODYlIg9m3bx+dOnVSEQiImdGpU6cjPuJSIRCRBqUiEKy67F8VAhGRiItMIVj0xSKGThvKR19+FHYUEQlR27ZtA9/Gli1bGD9+PH369CE7O5sLLriA1atXB77duopMITAz3tn4Dut2rgs7iog0Y+7OpZdeyogRI1i7di0rV67k17/+NV9++WWt11FSUhJgwoNFphD0aN8DgC8Kvgg5iYg0NkuXLuX0008nJyeHSy+9lJ07dwLw0EMPkZ2dTU5ODuPHjwdg/vz5DBw4kIEDB3LKKadQUFBQaV1vvvkmycnJTJw4sXzewIED+eY3v8lbb73FRRddVD5/0qRJPPXUU0Bs+Jy77rqLYcOGce+99zJkyJDy5T777DNycnIAWLJkCcOHD2fw4MGMGjWKzZs3H/Xnj0z30S5tupCUkETe7rywo4hI3IinRhw0b2z/sfzw1B9SeKCQC/54wUHt1w28jusGXsf2wu18+8VvV2p767q36pTjmmuu4Xe/+x3Dhw/njjvu4M477+TBBx9kypQprF+/npYtW7Jr1y4A7rvvPh555BGGDh3Knj17SElJqbSu5cuXM3jw4DrlSElJ4e233wbghRdeYN26dfTu3ZsXXniBsWPHcuDAAW666SZeeeUV0tPTeeGFF/j5z3/OtGnT6rS9MpE5IkiwBLq166ZCICKV5Ofns2vXLoYPHw7Atddey4IFCwDIycnhqquu4tlnnyUpKfZ389ChQ7n11lt56KGH2LVrV/n8+jBu3Ljy12PHjuXFF18EYkVh3LhxfPLJJyxfvpyRI0cycOBAfvnLX5KXd/S/0yJzRAAwInME3dp2CzuGiMQd6i/41smtD9neuXXnOh8B1Naf//xnFixYwOzZs7n77rtZsWIFkydP5sILL2TOnDmcfvrpvPHGG5x44onl7+nfvz8vvfRStetLSkqitLS0fLpqf/82bdqUvx43bhyXX345l112GWZG3759+eijj+jfvz/vvvtuvX7OwI4IzGyamW01s+U1tF9lZsviP++Y2YCgspR5+pKn+c25vwl6MyLShHTo0IHU1FQWLlwIwDPPPMPw4cMpLS1l48aNnHXWWdx7773s2rWLPXv2sHbtWk4++WRuu+02cnNz+fjjjyut7+yzz6aoqIgnnniifN6iRYuYP38+vXr1YuXKlRQVFZGfn8+8efNqzNWnTx8SExO5++67y48UTjjhBLZt21ZeCA4cOMCKFSuOeh8EeUTwFPAwML2G9vXAcHffaWbnA1OB0wLMIyJCYWEhPXr0KJ++9dZbefrpp5k4cSKFhYX07t2bJ598kpKSEq6++mry8/Nxd2655RY6duzI7bffzptvvkliYiLZ2dmcf/75ldZvZsyaNYubb76ZKVOmkJKSQmZmJg8++CA9e/Zk7Nix5OTk0LdvX0455ZRDZh03bhw//vGPWb9+PQAtWrTgpZde4kc/+hH5+fkUFxdz8803079//6PaJ+buR7WCQ67cLBN41d1POsxyqcByd+9+uHXm5uZ6XR9MM+OjGUyeN5ml319KaqvUOq1DROpu1apV9OvXL+wYzV51+9nMlrh7bnXLN5aLxd8F/lJTo5ndYGaLzWzxtm3b6ryRBEvg8/zP1YVURKSC0AuBmZ1FrBDcVtMy7j7V3XPdPTc9vdpHbtZK2b0E6jkkIvIvofYaMrMc4A/A+e6+I+jtdW8fO/P0xW4dEYiExd018FyA6nK6P7QjAjPLAF4GJrh7gwzC0a1drOuojghEwpGSksKOHTvq9MtKDq/seQRVb3I7nMCOCMxsBjAC6GxmecAvgGQAd38MuAPoBPw+/tdBcU0XMupLi8QWXHnylfRJ6xPkZkSkBj169CAvL4+judYnh1b2hLIjEWivoSAcTa8hEZGoagq9hhpUUyt+IiJBilwh+Nm8n3Hs/ceGHUNEpNGIXCFo26ItW/dupfBAYdhRREQahcgVgvLnEqgLqYgIEOVCoLuLRUSACBcC3UsgIhITyUIwcfBEeqf2DjuKiEijEKkH00DsYRePXvRo2DFERBqNyB0RAJSUlrDz651hxxARaRQiWQj+bca/cd6z54UdQ0SkUYhkIdBD7EVE/iWShaBXh15s2bOFfcX7Dr+wiEgzF8lCkNkxE4DP8z8PN4iISCMQ6ULw2a7PQs0hItIYRLIQ9Evvx91n3U1Wx6ywo4iIhC5y9xEAdG7dmf8687/CjiEi0ihE8ogAYMueLXy649OwY4iIhC6SRwQAV868kqKSIv7+738PO4qISKgie0SQ2TFTF4tFRIh4IdhUsImi4qKwo4iIhCqyhaBXh16A7iUQEYlsISi7l2BD/oZwg4iIhCywQmBm08xsq5ktr6HdzOwhM1tjZsvMbFBQWapz8jEn8/QlT5Odnt2QmxURaXSCPCJ4Chh9iPbzgb7xnxuABn1IQFqrNK4ZcA3d2nVryM2KiDQ6gRUCd18AfHWIRcYA0z3mPaCjmXUNKk91lm5Zynt57zXkJkVEGp0w7yPoDmysMJ0Xn7e56oJmdgOxowYyMjLqLcDNc2+mxEtY+J2F9bZOEZGmJsyLxVbNPK9uQXef6u657p6bnp5ebwF0L4GISLiFIA/oWWG6B7CpIQP06tCLTQWb2F+yvyE3KyLSqIRZCGYD18R7D50O5Lv7QaeFgpTZMZNSL9XTykQk0gK7RmBmM4ARQGczywN+ASQDuPtjwBzgAmANUAh8J6gsNan4XILeqb0bevMiIo1CYIXA3a84TLsDNwa1/doY1HUQf7vmbwzq2qC3MIiINCqRHX0UoENKB87KOivsGCIioYrsEBNlXlvzGq+ufjXsGCIioYn0EQHAve/cS+GBQi46/qKwo4iIhCLyRwR90/rqSWUiEmmRLwTHpR3Hjq93sPPrnWFHEREJhQpB2nEArPlqTchJRETCEflC0DetL6BCICLRFfmLxcd3Op7Vk1aX31wmIhI1kS8EyYnJ9O3UN+wYIiKhifypIYCXV73M/e/cH3YMEZFQqBAAc9fM5Z6/3xN2DBGRUKgQEOs5tK1wG/n78sOOIiLS4FQIUM8hEYk2FQJ0L4GIRJsKAdAnrQ+GsamgQR+QJiLSKES++yhA6+TW7P3ZXloltwo7iohIg9MRQZyKgIhElQpB3J9W/IlrZl0TdgwRkQanQhC3buc6nln2DLuLdocdRUSkQakQxKnnkIhElQpBXNl4Q6t3rA45iYhIw1IhiOub1pcES+Dj7R+HHUVEpEGpEMS1Sm7F4K6DKSktCTuKiEiDCvQ+AjMbDfw3kAj8wd2nVGnvADwLZMSz3OfuTwaZ6VDe/977YW1aRCQ0gR0RmFki8AhwPpANXGFm2VUWuxFY6e4DgBHA/WbWIqhMIiJysCBPDQ0B1rj7OnffDzwPjKmyjAPtzMyAtsBXQHGAmQ5p4YaFDHp8EJ/u+DSsCCIiDS7IQtAd2FhhOi8+r6KHgX7AJuAj4D/cvbTqiszsBjNbbGaLt23bFlReUpJS+OeWf7J86/LAtiEi0tgEWQismnleZXoUsBToBgwEHjaz9ge9yX2qu+e6e256enr9J407sfOJAKzaviqwbYiINDZBFoI8oGeF6R7E/vKv6DvAyx6zBlgPnBhgpkNq17IdGR0yWLltZVgRREQaXJCFYBHQ18yy4heAxwOzqyzzOXAOgJkdA5wArAsw02H169xPhUBEIiWw7qPuXmxmk4DXiHUfnebuK8xsYrz9MeBu4Ckz+4jYqaTb3H17UJlqY2TvkSzfpmsEIhId5l71tH3jlpub64sXLw47hohIk2JmS9w9t7o23VlcA91hLCJRoUJQxd79eznmvmP47bu/DTuKiEiDUCGook2LNiRYgrqQikhkqBBUIzs9Wz2HRCQyVAiq0a9zP1ZtX0VTu5AuIlIXKgTV6J/en91Fu9m4e+PhFxYRaeJUCKpxZq8zufX0W0kw7R4Raf4CfR5BU9W/S3/uH3V/2DFERBqE/uStwb7ifazfuT7sGCIigVMhqMG1/3st5z5zbtgxREQCp0JQgwHHDGDdznXsLtoddhQRkUCpENRg4LEDAVj25bKQk4iIBEuFoAYDjhkAwNItS0NOIiISrFoVAjNrYxbrS2lmx5vZxWaWHGy0cHVr143OrTvz4ZYPw44iIhKo2nYfXQB808xSgXnAYmAccFVQwcJmZjxywSP06tAr7CgiIoGqbSEwdy80s+8Cv3P3e83sn0EGawzG9h8bdgQRkcDV9hqBmdkZxI4A/hyf1+xvRisoKuDPq//Mlj1bwo4iIhKY2haCm4GfArPij5vsDbwZXKzGYUP+Bi6acRHz1s0LO4qISGBqVQjcfb67X+zu98QvGm939x8FnC10J3Q6gRaJLfjwS10wFpHmq7a9hp4zs/Zm1gZYCXxiZj8ONlr4khOTOanLSfxzS7O/HCIiEVbbU0PZ7r4buASYA2QAEwJL1Yjkds1l0ReLKPXSsKOIiASitoUgOX7fwCXAK+5+AIjEU1uGdB9CflE+n+74NOwoIiKBqG3Pn8eBz4APgQVm1guIxCA8l5x4CWf0PIPj0o4LO4qISCBqe7H4IXfv7u4XeMwG4KzDvc/MRpvZJ2a2xswm17DMCDNbamYrzGz+EeYPXKfWnchOzyYxITHsKCIigajtxeIOZvZbM1sc/7kfaHOY9yQCjwDnA9nAFWaWXWWZjsDvgYvdvT9weV0+RNDmrpnLrxb8KuwYIiKBqO01gmlAATA2/rMbePIw7xkCrHH3de6+H3geGFNlmSuBl939cwB331rb4A1p/mfzuXP+newr3hd2FBGRelfbQtDH3X8R/6W+zt3vBHof5j3dgYpPf8+Lz6voeCDVzN4ysyVmdk11KzKzG8qORrZt21bLyPVnSPchHCg9oJFIRaRZqm0h+NrMhpVNmNlQ4OvDvMeqmVe1p1ESMBi4EBgF3G5mxx/0Jvep7p7r7rnp6em1jFx/TutxGgD/yPtHg29bRCRote01NBGYbmYd4tM7gWsP8548oGeF6R7ApmqW2e7ue4G9ZrYAGACsrmWuBtGtXTe6t+vOP75QIRCR5qe2vYY+dPcBQA6Q4+6nAGcf5m2LgL5mlmVmLYDxwOwqy7xCbHjrJDNrDZwGrDqiT9BATutxGpv3bA47hohIvTuiEUTjdxeXuRV48BDLFpvZJOA1IBGYFh+wbmK8/TF3X2Vmc4FlQCnwB3dffqQfoiHM+NYMWiS2CDuGiEi9M/e63SBsZhvdvefhl6xfubm5vnjx4oberIhIk2ZmS9w9t7q2o3lmcSSGmChT6qWM/dNYHnj3gbCjiIjUq0MWAjMrMLPd1fwUAN0aKGOjkGAJrN+1nlc+eSXsKCIi9eqQhcDd27l7+2p+2rl7s39CWVVnZpzJe3nv6cYyEWlWjubUUOQMzxxOUUkR73/xfthRRETqjQrBERiWMQzDWLBhQdhRRETqjQrBEUhrlcb4k8bTpU2XsKOIiNSbyJ3nP1rPfeu5sCOIiNQrHRHUwf6S/ezZvyfsGCIi9UKF4AjtLtpN6j2pPPL+I2FHERGpFyoER6h9y/b06tCL+Rsa3cPURETqRIWgDs7sdSZvf/42xaXFYUcRETlqKgR1MLzXcAr2F/DB5g/CjiIictRUCOrgnN7nAPD62tdDTiIicvTUfbQOurTpwsPnP8ywjGGHX1hEpJFTIaijG4fcGHYEEZF6oVNDdVRcWszcNXP1QHsRafJUCI7C+JfG634CEWnyVAjqKCkhiXN6n8PctXOp61PeREQaAxWCozC6z2jyduexavuqsKOIiNSZCsFRGHXcKADmrpkbchIRkbpTITgKGR0y6Ne5H3/f+Pewo4iI1Jm6jx6lv074K13bdQ07hohInQV6RGBmo83sEzNbY2aTD7HcqWZWYmbfDjJPELq3706C6cBKRJquwH6DmVki8AhwPpANXGFm2TUsdw/wWlBZgnbnW3dy05ybwo4hIlInQf4pOwRY4+7r3H0/8DwwpprlbgJmAlsDzBKoLXu2MG3pNL4+8HXYUUREjliQhaA7sLHCdF58Xjkz6w5cCjx2qBWZ2Q1mttjMFm/btq3egx6ty/pdRuGBQg1CJyJNUpCFwKqZV/XOqweB29y95FArcvep7p7r7rnp6en1FrC+jMgcQceUjrz88cthRxEROWJB9hrKA3pWmO4BbKqyTC7wvJkBdAYuMLNid//fAHPVu+TEZC4+4WJmfzKbAyUHSE5MDjuSiEitBVkIFgF9zSwL+AIYD1xZcQF3zyp7bWZPAa82tSJQ5qqTryLJkthdtJtOrTuFHUdEpNYCKwTuXmxmk4j1BkoEprn7CjObGG8/5HWBpua8PudxXp/zwo4hInLEAr2hzN3nAHOqzKu2ALj7dUFmaQjuzgebP6B/l/6kJKWEHUdEpFZ0J1Q9Wvj5QnKfyOXV1a+GHUVEpNZUCOrR0J5D6dauG9M/nB52FBGRWlMhqEeJCYlcffLV/GXNX9i6t8neHyciEaNCUM8mDJhAcWkxzy9/PuwoIiK1okJQz07qchKDug5i5qqZYUcREakVDUMdgBnfmkGP9j3CjiEiUisqBAE4vtPxYUcQEak1nRoKyOtrX+fUJ06loKgg7CgiIoekQhCQ9i3bs3jTYp5d9mzYUUREDkmFICCndT+NwV0H8/Cih3GvOuiqiEjjoUIQEDNj0pBJrNy2krc+eyvsOCIiNVIhCNC4/uPo1KoTDy96OOwoIiI1Uq+hALVKbsU9595DWqu0sKOIiNRIhSBg3x303bAjiIgckk4NNYCdX+/kjjfvIG93XthRREQOokLQAPKL8vn1wl9z3zv3hR1FROQgKgQNILNjJlfnXM3UJVM1KqmINDoqBA3kp8N+yr7ifTzw7gNhRxERqUSFoIGc0PkExp00jofef4hNBZvCjiMiUk69hhrQL8/6JYUHCikqLgo7iohIORWCBtQnrQ+vjH8l7BgiIpXo1FAI1u9czz1v3xN2DBERQIUgFDNXzWTyvMm8se6NsKOIiARbCMxstJl9YmZrzGxyNe1Xmdmy+M87ZjYgyDyNxaQhk+id2psb59zIvuJ9YccRkYgLrBCYWSLwCHA+kA1cYWbZVRZbDwx39xzgbmBqUHkak5SkFB678DFW71jNrxf+Ouw4IhJxQR4RDAHWuPs6d98PPA+MqbiAu7/j7jvjk+8BkXnQ78g+I5mQM4Epb09hxdYVYccRkQgLstdQd2Bjhek84LRDLP9d4C/VNZjZDcANABkZGfWVL3T3n3c/aa3S6NauW9hRRCTCgiwEVs28ah/VZWZnESsEw6prd/epxE8b5ebmNpvHfaW3SefB0Q8C4O6YVbfLRESCFeSpoTygZ4XpHsBBt9SaWQ7wB2CMu+8IME+jtearNQyeOphFXywKO4qIRFCQhWAR0NfMssysBTAemF1xATPLAF4GJrj76gCzNGqdWnVie+F2rph5BQVFBWHHEZGICawQuHsxMAl4DVgFvOjuK8xsoplNjC92B9AJ+L2ZLTWzxUHlacxSW6Xyx8v+yPpd6/nhnB/qYfci0qCsqf3Syc3N9cWLm2e9uHv+3dzx1h389rzfcssZt4QdR0SaETNb4u651bXpzuJG5Odn/pzL+l3Gn1b+ieLS4rDjiEhEaNC5RiTBEph+yXQSLIGkBP3XiEjD0BFBI9OmRRtaJbeioKiACbMmsGHXhrAjiUgzp0LQSG3cvZFXV7/KOdPPYXPB5rDjiEgzpkLQSGWnZ/OXq/7Clj1bGPnMSLbt3RZ2JBFpplQIGrHTe5zOq1e+ytqda/nmk9/UaSIRCYQKQSM3InMEf53wVwAOlB4IOY2INEcqBE3AsIxhrPjhCo5LO45SL+WDzR+EHUlEmhEVgiYiMSERgEcXPcqpT5zK/e/crzuQRaReqBA0MdcOvJZLT7yU//zrf3LFzCvY+fXOw79JROQQVAiamLYt2vKny//Eb875DTNXzSTnsRwWblgYdiwRacJUCJogM2PysMm8+913ad+yfflpIxGRutA4Bk1Ybrdclk1cVl4Ibv/b7ZzQ+QSuOvkqPeRGRGpNRwRNXFkR2F+yn3nr5zFh1gSG/GEIb6x7I+RkItJUqBA0Ey0SW/D2v7/NU2OeYuverYx8ZiRnP302q7atCjuaiDRyKgTNSIIlcO3Aa1k9aTUPjHqAdTvX0a5lOwA+z/+cfcX7Qk4oIo2RHkzTjJV6KQkWq/XnPXMeizctZkLOBK4fdD0nH3NyyOlEpCHpwTQRVVYEAH467KeMOm4Ujy15jJzHchj0+CCmfzg9xHQi0lioEETEWVlnMeNbM/ji1i94YNQDpCSl8OWeLwEoKCpg8huTeX3t6xQeKAw5qYg0NJ0aijB3x8z42/q/MerZURSXFtMisQVn9DiDEZkjuH7Q9fRo3yPsmCJSDw51akj3EURY2b0GZ2edzc7bdvL2528zb9085q2fx13z72Js/7EAzFo1ixdXvshJ6SfRv0t/+qf3p3dqb93IJtJMqBAIEBu6YvRxoxl93GgAdhftpm2LtgB8ufdL3t34Ls8vf758+ZSkFLb9eBttW7Rlzqdz2LBrA1mpWWR1zCKjQwatkluF8jlE5MgFWgjMbDTw30Ai8Ad3n1Kl3eLtFwCFwHXurjGWG4H2LduXv56YO5GJuRMpKCpg1fZVrNi6gs92fVZeKKZ/OJ0XVrxQ6f29U3uz9kdrAXjg3QfYkL+Brm270ql1J1JTUunWrhtn9DwDgMIDhaQkpVS6uC0iDSewQmBmicAjwEggD1hkZrPdfWWFxc4H+sZ/TgMejf8rjVC7lu0Y0n0IQ7oPqTT/uW89x/3n3c9nuz5j/a71bMzfWKn9H1/8gzmfzqFgf0H5vIHHDuSf3/8nACOeGsGSzUvo0LID7Vu2p3Vya4b2HMoTFz8BwK2v3cpXX39Fm+Q2tGnRhtbJrclOzy4/dfXssmfLr2+U/fTq0IsBxw4AYMmmJSQmJJKckExiQiKJlkjHlI6kt0nH3dm8ZzMJlkCiJZa3pySl0DKpJe5OiZeQaIkatkOarSCPCIYAa9x9HYCZPQ+MASoWgjHAdI9dsX7PzDqaWVd319Pam5AES6B7++50b9+doRlDD2p//tuxU0p79+9lx9c72Pn1Tpx/dVL44ak/ZN3Odezat4v8onz27t/LMW2PKW9f9uUyPv3qU/bu38veA3vZV7yPS068pLwQ3PLaLWwv3F5pmxNyJjD90lj32KHThlJUUlSp/Qe5P+D3F/6eEi+h+2+7H5T5J9/4CfeMvIdd+3aRdm9a+fyyYnHXiLu4bdhtbMzfSL9H+gGxay5GrFjcc+49/ODUH/Dx9o/5xv98o1K7mfHgqAe5KucqlmxawoXPXVheZMraH7/ocS46/iIWbljI1bOurtRmGE+OeZLhmcN5fe3r3DjnxoPyz/jWDHK75TJr1Sx+8sZPDmqfPX42/dL78eyyZ7lz/p0Htc+7Zh4ZHTKYumQq971z30Ht713/Hmmt0njg3Qd4dPGjB7Uv+8EyUpJS+NWCXzF9WeVuyomWyMobY78GfjbvZ8xcNbNSe/uW7Vn0vUUA/Mdf/oO5a+dWau/atitvXfcWAN+b/T0Wfl559N3j0o7j1StfBeDKmVce9CCnnGNyePHyFwG45PlL+GTHJ5Xaz+hxBtPGTANg5DMjydudV6n93Kxz+d0FvwNi362qQ8FffMLFTDk3dvLjlMdPoai48nfvipOu4Pbht1NcWkzOozlUdf2g67n1jFvJ35fPN6Z9o1LuGd+acdDy9SHIQtAdqPinYR4H/7Vf3TLdARWCZqhNi9hf9BkdMirNv27gdYd83xvXVB43qdRLKSktKZ9eNnEZRSVF7C/ZT1Fx7N+OKR3L218e9zJFxUUcKD1ASWkJJV5C37S+QOyX6+MXPV4+v+zf3G6xzhUpSSncNeKu2DaraW/boi0Tcyfi7uXFzd3p36U/AB1aduDqnKvL28t66WWlZgGQ2iqVMSeMib0v3u44x7Y9FoC0VmmcnXX2Qe9PbZUa+zcl9aAjNIB2LWJ3lHdu3bna9tbJrQE4ps0x1banJKUAcGzbY8s/a0VJCbFfHd3bd6+2vew0X4/2PRjUdVC1bQAZHTIOam+T3Kb8dVZq1kHtnVp1Kn/dO7V3pSPNsm2W6ZvWl1IvrdTeJ7VP+evjOx1Py6SWldqzOmaVvz6x04mktUqr1N6rY69K7YfafnZ6NgdKKj9itlu7bkDsu3dSl5MqtTlOlzZdgNg4Ytnp2dXmqm+BdR81s8uBUe5+fXx6AjDE3W+qsMyfgd+4+9vx6XnAT9x9SZV13QDcAJCRkTF4wwY9xF1E5EiEdWdxHtCzwnQPYFMdlsHdp7p7rrvnpqen13tQEZEoC7IQLAL6mlmWmbUAxgOzqywzG7jGYk4H8nV9QESkYQV2jcDdi81sEvAase6j09x9hZlNjLc/Bswh1nV0DbHuo98JKo+IiFQv0PsI3H0OsV/2Fec9VuG1Awd3eRARkQajO3hERCJOhUBEJOJUCEREIk6FQEQk4prc8wjMbBtQ1zvKOgPbD7tUdGh/VKb9UZn2R2VNfX/0ckGDr6AAAAVkSURBVPdqb8RqcoXgaJjZ4prurIsi7Y/KtD8q0/6orDnvD50aEhGJOBUCEZGIi1ohmBp2gEZG+6My7Y/KtD8qa7b7I1LXCERE5GBROyIQEZEqVAhERCIuMoXAzEab2SdmtsbMJoedJwxm9pmZfWRmS81scXxempn91cw+jf+bGnbOoJjZNDPbambLK8yr8fOb2U/j35dPzGxUOKmDU8P++L9m9kX8O7LUzC6o0NZs94eZ9TSzN81slZmtMLP/iM+PxPcjEoXAzBKBR4DzgWzgCjPLPvS7mq2z3H1ghf7Qk4F57t4XmBefbq6eAkZXmVft549/P8YD/ePv+X38e9ScPMXB+wPggfh3ZGB8BOEo7I9i4P+4ez/gdODG+GeOxPcjEoUAGAKscfd17r4feB4YE3KmxmIM8HT89dPAJSFmCZS7LwC+qjK7ps8/Bnje3YvcfT2xZ2Yc/HDfJqyG/VGTZr0/3H2zu38Qf10ArCL2/PRIfD+iUgi6AxsrTOfF50WNA6+b2ZL4c6ABjil7Klz83y6hpQtHTZ8/yt+ZSWa2LH7qqOxUSGT2h5llAqcA/yAi34+oFAKrZl4U+80OdfdBxE6R3WhmZ4YdqBGL6nfmUaAPMBDYDNwfnx+J/WFmbYGZwM3uvvtQi1Yzr8nuj6gUgjygZ4XpHsCmkLKExt03xf/dCswidij7pZl1BYj/uzW8hKGo6fNH8jvj7l+6e4m7lwJP8K/THc1+f5hZMrEi8Ed3fzk+OxLfj6gUgkVAXzPLMrMWxC7yzA45U4MyszZm1q7sNXAesJzYfrg2vti1wCvhJAxNTZ9/NjDezFqaWRbQF3g/hHwNquyXXtylxL4j0Mz3h5kZ8D/AKnf/bYWmSHw/An1mcWPh7sVmNgl4DUgEprn7ipBjNbRjgFmx7ztJwHPuPtfMFgEvmtl3gc+By0PMGCgzmwGMADqbWR7wC2AK1Xx+d19hZi8CK4n1KLnR3UtCCR6QGvbHCDMbSOw0x2fA9yES+2MoMAH4yMyWxuf9jIh8PzTEhIhIxEXl1JCIiNRAhUBEJOJUCEREIk6FQEQk4lQIREQiToVAIsfM9sT/zTSzK+t53T+rMv1Ofa5fJAgqBBJlmcARFYJajDBZqRC4+zeOMJNIg1MhkCibAnwzPu7+LWaWaGb/z8wWxQdd+z6AmY2Ij1X/HPBRfN7/xgfvW1E2gJ+ZTQFaxdf3x/i8sqMPi697ucWeCTGuwrrfMrOXzOxjM/tj/C5XzGyKma2MZ7mvwfeOREYk7iwWqcFk4D/d/SKA+C/0fHc/1cxaAn83s9fjyw4BTooPOQzw7+7+lZm1AhaZ2Ux3n2xmk9x9YDXbuozYQG4DgM7x9yyIt51CbFz7TcDfgaFmtpLYEA8nurubWcd6//QicToiEPmX84Br4kMM/APoRGwMGYD3KxQBgB+Z2YfAe8QGH+vLoQ0DZsQHdPsSmA+cWmHdefGB3pYSO2W1G9gH/MHMLgMKj/rTidRAhUDkXwy4qcLTubLcveyIYG/5QmYjgHOBM9x9APBPIKUW665JUYXXJUCSuxcTOwqZSexhKHOP6JOIHAEVAomyAqBdhenXgB/EhyPGzI6Pj9RaVQdgp7sXmtmJxB5tWOZA2furWACMi1+HSAfO5BCjVcbHxe8Qf1TkzcROK4kEQtcIJMqWAcXxUzxPAf9N7LTMB/ELttuo/tGdc4GJZrYM+ITY6aEyU4FlZvaBu19VYf4s4AzgQ2Ije/7E3bfEC0l12gGvmFkKsaOJW+r2EUUOT6OPiohEnE4NiYhEnAqBiEjEqRCIiEScCoGISMSpEIiIRJwKgYhIxKkQiIhE3P8HNRfa6lP5//sAAAAASUVORK5CYII=\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# 绘制当前的函数模型\nplt.plot(X_train, y_train,'r.', label='Training data') # 显示训练集散点图\nline_X = np.linspace(X_train.min(), X_train.max(), 500) # X值域\n# 关于weight_history[-1],这里的索引[-1]，就代表迭代500次后的最后一个W值\nline_y = [weight_history[-1]*xx + bias_history[-1] for xx in line_X] # 假设函数\nplt.plot(line_X,line_y,'b--', label='Current hypothesis' ) # 显示当前函数\nplt.xlabel('Wechat Ads') # x轴Label\nplt.ylabel('Sales') # y轴Label\nplt.legend() # 显示图例\nplt.show() # 显示函数图像","execution_count":17,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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gjj56quvGDlyJEcccQTHHnssgwcPZt26dQktw8KFC2vMUjpx4kTuueceT88/adKkqj9v2rSJrl27xnzMSNN0mywXroJNpXOEm8yaiGuogTUNxYGqMmzYMC666CKefPJJAFauXMmWLVvo3LlzRMeoqKioyksU6nUkFi5cSNOmTT1bu6A2kyZN4qabborrMSNN022ynL+C9bJ9PV7nqGkyayKuoQb2RBAHCxYsIDc3l+Li4qr3evbsyQknnLBfmmmAcePGVaWYaN++PXfccQcDBgxg3rx51V7/85//pKCggN69ezN8+HB27txZ9bnbb7+d3r17061bNz755BM2bdrEzJkzuffee+nZsydLliypVs41a9ZUS3F96623MnXq1Kp9br75ZqZNm8bChQsZOHAgw4YN49hjj6W4uJjKykoAnnjiCbp160bXrl2ZMGECADfccAO7du2iZ8+ejBo1CnDB7Ne//jVdunTh1FNPrUp5/emnn3L66afTp08fTjjhBD755BMA5s2bR9euXenRowcDBw4E9k/TvWjRoqoFf3r16lWV9sIYwFWcN97obQXq9TkScQ2hqGpa/fTp00eDrVmzZr/XJ55Y/Wf6dLftxx9Db3/0Ubd969bq22ozdepUveqqq0JuW7BggZ5xxhlVr8eOHauP+k52+OGH6x//+MeqbYGvt27dqieccILu3LlTVVXvuusu/f3vf1+137Rp01RVdfr06XrZZZepqurtt9+ud999d8hy3H777VpQUKC7d+/WrVu36sEHH6xlZWW6ceNG7dWrl6qqVlRUaMeOHXXbtm26YMECbdiwoX766adaXl6uv/zlL3XevHn6xRdfaNu2bfXrr7/WvXv3alFRkc6fP19VVQ844ICq823cuFFzcnJ0xYoVqqo6fPhwfeyxx1RV9aSTTtJ169apquo777yjRUVFqqratWtXLS0tVVXVb7/9ttr3d+aZZ+pbb72lqqo//PCD7t27t9p1Bv9bMMY4wHKtoV61pqEkO++880K+fuedd1izZk1VLp+ysjIKAu4Szj77bAD69OnDs88+G9G5/CmuGzZsWJXiun379uTl5bFixQq2bNlCr169yMvLA1y6644dOwIurfVbb71Fbm4uhYWFtGzZEoBRo0axePFizjrrrGrn69ChAz179qwq56ZNm9i5cydLly5l+PDhVfvt2bMHgP79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\n"},"metadata":{"needs_background":"light"}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"print ('当前损失：',loss_function(X_train, y_train, \n                  weight_history[-1], bias_history[-1]))\nprint ('当前权重：',weight_history[-1])\nprint ('当前偏置：',bias_history[-1])","execution_count":18,"outputs":[{"output_type":"stream","text":"当前损失： 0.004656784743714472\n当前权重： 0.6581321194241853\n当前偏置： 0.17541401911198484\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"print ('测试集损失：',loss_function(X_test, y_test, \n                    weight_history[-1], bias_history[-1]))","execution_count":19,"outputs":[{"output_type":"stream","text":"测试集损失： 0.004556706461254487\n","name":"stdout"}]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}